我需要计算从网络摄像头拍摄的视频中的面部数量 . 例如,如果我站在摄像机前面然后计数= 1,现在如果检测到任何其他人则计数= 2,如果检测到另一个人则计数应该是3 .
我在python中使用opencv的frontal_face_haarcascade.xml . 我可以检测帧中的面部然后增加计数,但是发生的是计数随着帧数的增加而增加 . 因此,即使1个人被发现站立10秒,它也会显示为“67” .
我怎样才能克服这个问题?
这是代码:
import cv2
import sys
cascPath = sys.argv[1]
faceCascade = cv2.CascadeClassifier(cascPath)
video_capture = cv2.VideoCapture(0)
ret, frame = video_capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30)
)
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Display the resulting frame
cv2.imshow('Video', frame)
video_capture.release()
cv2.destroyAllWindows()
2 回答