我是面部检测的新手。我正在尝试识别数据集中的人脸。数据集是我系统中的文件夹,其中包含用户的所有图像。现在,我的问题是我的检测器仅检测到第一个人的脸并显示姓名。同样对于第二人称,它正在检测人脸(在人脸周围得到矩形框),但是再次显示第一人称名字而不是第二人称名字。对于剩下的人,我只得到第一个人的名字。我无法识别我的代码有什么问题。请帮我这个代码。预先谢谢你。
Detector.py
import cv2
import numpy as np
faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cam=cv2.VideoCapture(0);
rec=cv2.face.LBPHFaceRecognizer_create();
rec.read("recognizer\\trainingData.yml")
id=0
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:
roi_gray=gray[y:y+h,x:x+w]
roi_color=img[y:y+h,x:x+w]
cv2.rectangle(img,(x,y),(x+w,y+h),(100,212,255),2)
id,conf=rec.predict(roi_gray)
fontface=cv2.FONT_HERSHEY_SIMPLEX
fontscale=1
fontcolor=(255,255,255)
if(id==1):
id="satya"
elif(id==2):
id="charitha"
elif(id==3):
id="Rajesh"
else:
id="unknown"
cv2.putText(img,str(id),(x,y+h),fontface,fontscale,fontcolor)
cv2.imshow("sravanthi",img);
if cv2.waitKey(1) & 0xFF ==ord('q'):
break
cam.release()
cv2.destroyAllwindows()
我正在使用python 2.7.11和opencv-3.4.0。 对不起,我的英语不好。