python - 使用opencv检测没有眉毛和下巴的人脸

标签 python opencv computer-vision face-detection eye-detection

我正在尝试使用 OpenCV haar 级联分类器检测人脸(特别是睁开眼睛的人脸)。但是,我在检测没有眉毛和/或下巴的人脸时遇到了问题,如下图所示。我已经尝试了许多用于人脸检测的 haar 级联,例如 haarcascade_frontalface_default.xml、haarcascade_frontalface_alt_tree.xml 等。但所有这些都不起作用。

enter image description here enter image description here

这是我的代码:

import cv2
import os
import glob

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye_tree_eyeglasses.xml')

count = 0
path = "./test/*.png"
for index, filename in enumerate(glob.glob(path)):
    img = cv2.imread(filename)
    basename = os.path.splitext(os.path.basename(filename))[0]

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    for (x,y,w,h) in faces:
        # cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0), 2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        eyes = eye_cascade.detectMultiScale(roi_gray)

        if len(eyes) >= 2:
            count = count + 1
            output_dir = './test/output'
            cv2.imwrite(f'{output_dir}/{basename}.png', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

先感谢您!

最佳答案

通过 dlib 使用面部标志,这个方法可能对你有用,看这两个链接:

  • facial-landmarks-dlib-opencv-python
  • opencv-face-recognition

  • 另外,请参阅此链接:
  • dlib-and-deep-learning
  • 关于python - 使用opencv检测没有眉毛和下巴的人脸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62136457/

    相关文章:

    python - OpenCV - imread()、imwrite() 增加了 png 的大小?

    python - 在 Airflow 上使用 DataprocOperator 的组件网关

    python - 如何从非结构化文本创建 Python 字典?

    opencv - 需要opencv SVM的快速示例

    python - 有没有一种方法可以将图像保存在 OpenCV 执行期间创建的子文件夹中

    python - 为什么使用 matplotlib 无法正确显示 CIFAR-10 图像?

    python - harcascadePath = cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'

    python - 我如何将 nuitka 与 virtualenv 一起使用

    python - 使用 PIL 使文本大小自动调整为图像

    graphics - 最喜欢的手势识别技术