2016-02-12 125 views
0

所以我试图一个人脸检测程序,并用下面这段代码:Python的 - 人脸检测(detecMultiScale)

import numpy as np 
import cv2 

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

img = cv2.imread('sachin.jpg') 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
for (x,y,w,h) in faces: 
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 
    roi_gray = gray[y:y+h, x:x+w] 
    roi_color = img[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',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

的代码实际上是从here并没有完成其工作。它向我展示了图像,但没有标记脸部或眼睛。我正在与Rasbian Jessie OS一起开发Raspberry Pi。

这里有一些事情我尝试:

我试图cv2.imshow(“IMG”,灰色)和它显示的灰度图像,这意味着BRG =>灰色是好的。

我试图在随机的地方画一个矩形,所以cv2.rectangle函数是好的。

我检查了OpenCV/data文件夹,'haarcascade_frontalface_default.xml'和'haarcascade_eye.xml'文件都在那里。

我试图打印(faces_cascade),并且它返回 “CascadeClaasifier 0x741b48d0”

我试图打印(面),并将其返回(),这意味着没有什么是这个数组内。

我已经试过4,5图像用不同的亮度,没有一次成功

我觉得可能出问题的唯一部分是这一行:

faces = face_cascade.detectMultiScale(gray, 1.3, 5) 

因为打印(面)没有不返回任何价值。

任何人都可以帮忙吗?任何帮助表示感谢。

解决,而不是'haarcascade_frontalface_default,xml',键入文件的完整目录。与眼睛检测部分相同。

回答

0

解决。不要只是'haarcascade_frontalface_defuault.xml',输入文件的完整目录。与眼睛检测部分相同。

0

我发现这段代码也显示了我错误的结果。有什么问题?