выбрать первое лицо OpenCV Detective MultiSale с Python - PullRequest
0 голосов
/ 08 апреля 2019

Я тестирую OpenCV для обнаружения лиц, и мне было интересно, как эффективно обнаружить только первые лица?

приведенный ниже код работает для нескольких, но если я делаю цикл for для лиц [0],приложение жалуется на это:

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 ]

1 голос
/ 08 апреля 2019

face [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)
0 голосов
/ 08 апреля 2019

Вы не можете перебирать лица [0], потому что это не массив, это будет одно значение, вы просто повторяете цикл один раз и прерываете в конце, чтобы отобразить только первое обнаруженное лицо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...