如何使用opencv + python在不同角度检测面部

时间:2017-03-16 10:31:39

标签: python opencv

我想在不同角度检测脸部。现在我的代码检测到面部,如果面部正好在相机前面。但我想在不同角度检测面部。我怎么能这样做..请帮助我。

我的代码如下: 的 detector.py

import cv2
import numpy as np

faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml');
cam=cv2.VideoCapture(0);
rec=cv2.createLBPHFaceRecognizer();
rec.load("recognizer/trainningData.yml")
id=0
font=cv2.cv.InitFont(cv2.cv.CV_FONT_HERSHEY_COMPLEX_SMALL,2,1,0,2)
while(True):
        ret,img=cam.read();
        gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        faces=faceDetect.detectMultiScale(gray, 1.3,5);
        for(x,y,w,h) in faces:
              cv2.rectangle(img,(x,y),(x+w,y+h), (0,0,255),2)
              id,conf=rec.predict(gray[y:y+h,x:x+w])
              if(id==1):
                  id="Aftab Ahmed"
              elif (id==2):
                      id="Ahmed"
              cv2.cv.PutText(cv2.cv.fromarray(img),str(id),(x,y+h),font,255);
        cv2.imshow("Face", img);
        if(cv2.waitKey(1)==ord('q')):
            break;
cam.release()
cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

为了检测面部的非正面部分,您必须使用不同的分类器。对于正面检测,您使用了 haarcascade_frontalface_default.xml 文件。面部的侧面部分通常称为轮廓。

要检测非正面部分,可以使用不同的xml文件,即 lbpcascade_profileface.xml 。您可以在THIS GITHUB PAGE

上找到此.xml文件

使用xml检测个人资料。