视频猫耳滤镜太摇摆不定

Video cat ear filter too wiggly

我正在制作一个视频滤镜,可以像 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)

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

"The problem is, because of detection, the coordinates changes a little bit every frame so the filter is too wiggly."

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

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

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

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