2016-03-18 1 views
0

В настоящее время я пытаюсь обнаружить лицо с камеры своего ноутбука, но по какой-то причине код, который я нашел, не дает результата. Код запускает веб-камеру и не дает никаких ошибок, но прямоугольники не рисуются для лиц. Никаких лиц не обнаружено, поэтому цикл for никогда не запускается, я пытался изменить масштабный коэффициент, но это не помогло. Оба файла xml находятся в той же папке, что и код. Код выглядит следующим образом:Обнаружение лиц с камеры с помощью Opencv Python

import numpy as np 
import cv2 

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') 

img = cv2.VideoCapture(0) 

while(1): 
    _,f=img.read() 
    gray = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
    for (x,y,w,h) in faces: 
     cv2.rectangle(f,(x,y),(x+w,y+h),(255,0,0),2) 
     roi_gray = gray[y:y+h, x:x+w] 
     roi_color = f[y:y+h, x:x+w] 
     eyes = eye_cascade.detectMultiScale(roi_gray) 
     for (ex,ey,ew,eh) in eyes: 
      cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 

    cv2.imshow('img',f) 
    if cv2.waitKey(25) == 27: 
     break 

cv2.destroyAllWindows() 
img.release() 

ответ

1

Здравствуйте программа отлично работает, у вас есть 2 небольшие проблемы, что вам нужно Таб этот код, чтобы положить внутрь время:

cv2.imshow('img',f) 
if cv2.waitKey(25) == 27: 
    break 

и убедитесь, что ваши XML-файлы были установлены это мой код:

import numpy as np 
import cv2 

face_cascade = cv2.CascadeClassifier('/usr/local/Cellar/opencv3/3.0.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml') 
eye_cascade = cv2.CascadeClassifier('/usr/local/Cellar/opencv3/3.0.0/share/OpenCV/haarcascades/haarcascade_eye.xml') 

img = cv2.VideoCapture(0) 

while(1): 
    _,f=img.read() 
    gray = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
    for (x,y,w,h) in faces: 
     cv2.rectangle(f,(x,y),(x+w,y+h),(255,0,0),2) 
     roi_gray = gray[y:y+h, x:x+w] 
     roi_color = f[y:y+h, x:x+w] 
     eyes = eye_cascade.detectMultiScale(roi_gray) 
     for (ex,ey,ew,eh) in eyes: 
      cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 

    cv2.imshow('Test',f) 
    if cv2.waitKey(25) == 27: 
     break 

cv2.destroyAllWindows() 
img.release() 
+0

У меня был код с кодом, который только что забыл сделать это во время публикации здесь. Простите за это. Но мой код по-прежнему не отображает никаких прямоугольников. Пожалуйста помоги. Оба файла xml находятся в той же папке, что и код. – MrSir

+0

Я просто запускаю код и работаю, возможно, это ваш вариант OpenCV. Я попробовал его с OpenCV 3 на Mac и отлично работает – AlejandroQH

+0

Спасибо большое. В моих XML-файлах произошла ошибка. Код работал. – MrSir