2017-03-16 66 views
0

不同角度的臉我想檢測不同的角度在臉上。現在我的代碼檢測臉部,如果臉部正好在相機前面。但我想檢測不同角度的臉部。我怎麼能這樣做..請幫助我。如何檢測使用的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() 

回答

0

爲了檢測臉部的非正面部分,你必須使用一個不同的分類。對於正面人臉檢測,你已經使用haarcascade_frontalface_default.xml文件。臉部的側面部分通常稱爲輪廓。

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

上找到這個.xml文件使用xml檢測配置文件。

+0

感謝@Jeru盧克的建議。我會改變分類器。你可以用任何方式來檢測從網絡攝像機和距離(大約10米到100米)的黑暗中的圖像。 – user2206637

+0

100米? SERIOUSLY !!!! 10米是個大問題,超過10米真的很難 –

+0

哦。我的項目在10米內工作正常。但客戶想要超過10米,至少在30-50之間,我也有問題在黑暗中探測。你能給我任何提示黑暗探測嗎?然而 – user2206637