用Python选择第一张面孔OpenCV detectMultiScale

时间:2019-04-08 08:42:46

标签: python opencv

我正在测试OpenCV以检测人脸,想知道如何才能有效地仅检测第一张人脸?

以下代码可用于多个代码,但是如果我在face [0]上执行for循环,则应用程序会抱怨:

for (x,y,w,h) in faces[0]:
TypeError: 'numpy.int32' object is not iterable


if len(faces) == 0:
        print('the list is empty', datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    else:
        print('the list is NOT empty', 'Detected',len(faces),'Face(s)')
        print(faces)

        for (x,y,w,h) in faces:
            cv.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
            roi_color = img[y:y+h, x:x+w]  

    cv.imshow('Facial Recognition', img)

2 个答案:

答案 0 :(得分:1)

faces [0]只是一张脸,因此您无法在其上循环。

if len(faces) == 0:
    print('the list is empty', datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
else:
    print('the list is NOT empty', 'Detected',len(faces),'Face(s)')
    print(faces)

    face = faces[0]
    (x,y,w,h) = face 
    cv.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
    roi_color = img[y:y+h, x:x+w]  

cv.imshow('Facial Recognition', img)

答案 1 :(得分:0)

您无法迭代人脸[0],因为它不是数组,它将是单个值,您只需对循环进行一次迭代,并在结尾处中断以仅显示检测到的第一个人