【问题标题】:How to create a counter in face detection?如何在人脸检测中创建计数器?
【发布时间】:2018-11-13 07:51:14
【问题描述】:

正如您在下面的代码中看到的,它只检测带有 haar 级联的人脸,我想知道如何向网络摄像头显示当前检测到的人数。 例如,显示在摄像头一角检测到的 X 人。

from  __future__ import print_function 
import cv2 
cap = cv2.VideoCapture(0) 

face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

while (cap.isOpened()):
   ret,frame = cap.read()
   gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, 
flags=cv2.CASCADE_SCALE_IMAGE,minSize=(50, 50), maxSize=None)

if len(faces) > 0:
  print("detected person!")
for (x, y, w, h) in faces:
    cv2.rectangle(frame, (x - 10, y - 20), (x + w + 10, y + h + 10), (0, 255, 0), 2)
    roi_gray = frame[y-15:y + h+10, x-10:x + w+10]

cv2.imshow("imagem", frame) 
if cv2.waitKey(1) & 0xFF == ord('q'): 
break 

cap.release() 
cv2.destroyAllWindows()

【问题讨论】:

    标签: python python-2.7 numpy opencv face-detection


    【解决方案1】:

    我怀疑代码中显示的所有内容都可以正常工作。

    如果是这样,您已经知道使用 len(faces) 检测到了多少张面孔。您现在只需将此信息添加到视频中即可。

    为此,我建议你使用cv::putText函数:https://docs.opencv.org/3.1.0/d6/d6e/group__imgproc__draw.html#ga5126f47f883d730f633d74f07456c576

    然后,您将能够在读取的每个帧上添加它。

    旁注:这可能只是因为在此处复制粘贴您的代码,但请注意您的缩进。

    【讨论】:

      【解决方案2】:

      仅显示 len(faces) 的数量可能无法解决问题,因为您可能会遇到在同一面上绘制多个边界框的情况。因此,我建议您对您的检测结果,然后在每次调用 NMS 操作时递增一个计数器。计数器的最终计数将为您提供更好、更准确的结果。

      【讨论】:

        猜你喜欢
        • 2015-01-11
        • 2016-11-05
        • 2020-06-28
        • 2016-11-18
        • 2019-11-18
        • 2019-12-01
        • 2013-07-03
        • 2013-09-24
        • 2012-04-17
        相关资源
        最近更新 更多