【问题标题】:Face and hair detection for PythonPython 的人脸和头发检测
【发布时间】:2017-11-02 23:51:56
【问题描述】:

我正在使用OpenCVdlib 从图像中检测人脸。结果非常好。这是一个例子:

但是,我还想从图像中提取头发和脖子,如下所示:

我试图寻找一个库或框架来帮助我实现这一目标,但我找不到。

有什么办法吗?

【问题讨论】:

  • 您需要为此训练自己的模型。由于这超出了 StackOverflow 的范围,我建议将其发布在 SO 的 CrossValidated 或数据科学页面上。
  • 您只需要训练一个模型,该模型不考虑面部,还考虑头发和颈部。您可能可以使用相同的人脸检测库,但您只需更改训练数据。
  • 尝试增加for (x,y,w,h) in faces: cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)X,Y,W,H

标签: python opencv deep-learning face-detection dlib


【解决方案1】:

使用此代码按百分比增加边界框。

rects = detector(original_image, 1)
for rect in rects:
    (x, y, w, h) = rect_to_bb(rect)
    x_inc = int(w*0.3)
    y_inc = int(h*0.3)
    sub_face = original_image[y-y_inc:y+h+y_inc, x-x_inc:x+w+x_inc]
    newimg = cv2.resize(sub_face,(int(224),int(224))) 

【讨论】:

    【解决方案2】:

    如果您想准确提取头发和颈部区域,则需要训练自己的模型,因为当前的 dlib 模型不包含它们。

    否则,您只是想相对捕获,您可以使用Openpose,它为您提供面部+耳朵+肩膀(甚至是身体和手的手指)的地标。从这些地标中,您可以绘制您感兴趣的区域。

    例子:

    矩形的宽度 = 肩的长度(点 2 -> 点 5)

    高度 = 从脖子到(点 1)到鼻子(点 0)的长度 x 2。(点 1 - 点 0)*2

    openpose 的地标

    脸+头发+脖子

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2023-01-13
      • 2016-05-24
      • 2015-12-18
      • 2021-01-22
      • 2019-11-18
      • 2017-06-01
      • 2013-09-24
      • 2014-08-26
      相关资源
      最近更新 更多