创建一个使用Opencv和python 3.7和PIL模块的考勤系统。
它分为3个阶段:-
1)拍摄图像
2)训练图像
3)跟踪图像
在拍摄图像时,它注定要输入一些ID和名称,并且在跟踪图像期间,如果检测到图像,则会将出席者上载到包含名称和ID的CSV文件中。
因此,在跟踪图像期间,即使一切都成功运行并且外壳中没有错误,它始终显示UNKNOWN
我使用dataframs的track Image方法类似于:-
attendance = pd.DataFrame(columns = col_names)
while True:
ret, im =cam.read()
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
faces=faceCascade.detectMultiScale(gray, 1.2,5)
for(x,y,w,h) in faces:
cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2)
Id, conf = recognizer.predict(gray[y:y+h,x:x+w])
if(conf < 50):
ts = time.time()
date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
aa=df.loc[df['Id'] == Id]['Name'].values
tt=str(Id)+"-"+aa
attendance.loc[len(attendance)] = [Id,aa,date,timeStamp]
else:
Id='Unknown'
tt=str(Id)
if(conf > 75):
noOfFile=len(os.listdir("ImagesUnknown"))+1
cv2.imwrite("ImagesUnknown\Image"+str(noOfFile) + ".jpg", im[y:y+h,x:x+w])
cv2.putText(im,str(tt),(x,y+h), font, 1,(255,255,255),2)
attendance=attendance.drop_duplicates(subset=['Id'],keep='first')
cv2.imshow('im',im)
if (cv2.waitKey(1)==ord('q')):
break
我希望它可以跟踪我的图像并在图像上显示我的名字,但基本上每次都显示未知。.
感谢您提供任何快速帮助。