Python的面部和头发检测

时间:2017-06-01 17:56:33

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

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

enter image description here

然而,我也想从图像中取出头发和脖子,就像那样: enter image description here

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

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

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

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))) 

答案 1 :(得分:0)

如果要精确提取头发和脖子的区域,则需要训练自己的模型,因为当前的dlib模型不包括它们。

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

示例:

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

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

openpose的地标 enter image description here

脸+头发+脖子 enter image description here