2013-12-15 3 views
0

Это простой код обнаружения лица с помощью OpenCV:OpenCV обнаружение лица

import cv2 
img = cv2.imread("one.jpg") 
hc = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml") 
faces = hc.detectMultiScale(img) 

for face in faces: 
    print 'inside for loop ! ' 
    cv2.rectangle(img, (face[0], face[1]), (face[0] + face[2], face[0] + face[3]), (255,  0, 0), 3) 

cv2.imshow("Face", img) 
if cv2.waitKey(5000) == 27: 
    cv2.destroyWindow("Face") 
cv2.imwrite("two.jpg", img) 

но при запуске этого кода, окончательное изображение, отображаемое т.е. two.jpg такой же, как указано в one.jpg вход т.е. ! без какого-либо обнаружения лица. код внутри цикла for никогда не выполняется ... почему это так? Есть ли какие-то изменения, которые я должен внести в код?

this is the image I am giving as one.jpg & the final image ie two.jpg also looks the same

+0

Вы пытались выполнить код за строкой и проверить, пуст ли 'faces'? – ChrisP

ответ

0

Это не похоже, ни одна из граней в изображении используемой были обнаружены (в этом случае, для цикла не будет выполняться). вы можете:

  1. Используйте изображение, которое имеет более легкое для восприятия (большое, без очков) лицо.
  2. Шаг через код с помощью отладчика (я не знаю, как сделать это в Python, но это должно быть легче найти)
  3. Проверьте следующие атрибуты граней а. размер б. координаты местоположения каждой грани, если они обнаружены.
Смежные вопросы