我正在测试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)
答案 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],因为它不是数组,它将是单个值,您只需对循环进行一次迭代,并在结尾处中断以仅显示检测到的第一个人