0

我正在制作一个视频滤镜,可以像 Snapchat 镜头一样为你添加猫耳朵。我正在使用 opencv4 和 Dlib。Dlib 负责检测人脸。问题是因为检测坐标每帧都会发生一点变化,过滤器太摇摆不定。

我尝试每 2-3 帧更改一次耳朵的位置,但没有太大变化。

while True:
    _, frame = cap.read()
    ear_mask.fill(0)
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = detector(frame)

    for face in faces:
        ear_width, ear_height, top_left, degree = generateNewEar(frame)
        frame = generateImage(frame, ear_width,
                              ear_height, top_left, degree)
    cv2.imshow("Frame", frame)

人们通常如何处理这个问题?

4

1 回答 1

1

“问题是,由于检测,坐标每帧都会发生一点变化,因此过滤器太摇摆不定。”

我不使用 Python 或 OpenCV,因此无法向您展示示例代码。一些建议你可以试试。

(1)相机噪声可能会影响检测。尝试对输入进行软模糊以平滑像素。测试不同的模糊级别。

(2)尝试每秒更新一次耳朵位置,然后微调到每秒X次。

(3)比较当前帧与前一帧的耳朵位置。如果距离太小(1 或 2 像素),则忽略并使用旧位置。

于 2019-07-27T06:32:59.340 回答