我想制作一个面部检测应用程序,该应用程序先检测我的面部,然后将其放置在带有标题(如“ my_name”)的框中,同时还要检测其他人在带有标题(如“未知”)的框中的放置。我已经编写了一个可以正常运行的程序,但是我不能确定它是否运气很好,或者这个概念确实有效。我想请你帮忙。我的程序在算法上是否正确?如果没有,您能建议些什么吗?
import cv2
name_cascade = cv2.CascadeClassifier('cascade.xml')
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
names = name_cascade.detectMultiScale(gray, 1.3, 5)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
flag = 0
for (x,y,w,h) in names:
font = cv2.FONT_HERSHEY_COMPLEX
cv2.putText(frame, 'Name', (x-4,y-4), font, 0.5, (0,255,255), 1, cv2.LINE_AA)
cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)
flag = 1
if flag == 0:
for (x,y,w,h) in faces:
font = cv2.FONT_HERSHEY_COMPLEX
cv2.putText(frame, 'Unknown', (x-4,y-4), font, 0.5, (0,255,255), 1, cv2.LINE_AA)
cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)
cv2.imshow('img', frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()