Как создать счетчик в распознавании лиц? - PullRequest
0 голосов
/ 04 июня 2018

Как видно из приведенного ниже кода, он обнаруживает только лица с каскадом Хаара, я хотел бы знать, как я показываю веб-камере, сколько людей в настоящее время обнаружено.Например, показ в углу веб-камеры 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()

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Простое отображение количества лен (лиц) может не решить эту задачу, поскольку у вас могут быть случаи, когда на одном и том же лице нарисовано несколько ограничивающих рамок. Поэтому я бы посоветовал вам выполнить немаксимальное подавление (NMS) длярезультат ваших обнаружений с последующим увеличением счетчика каждый раз, когда вызывается операция NMS.Окончательный счетчик даст вам лучший и более точный результат.

0 голосов
/ 04 июня 2018

Я подозреваю, что все, что показано в коде, работает нормально.

Если это так, вы уже знаете, сколько лиц обнаружено с помощью len (лица).Теперь вам нужно только добавить эту информацию в видео.

Для этого я предлагаю вам использовать функцию cv::putText: https://docs.opencv.org/3.1.0/d6/d6e/group__imgproc__draw.html#ga5126f47f883d730f633d74f07456c576

После этого вы сможете добавлять ее на каждомсчитываемые фреймы.

Примечание: это может быть связано с тем, что вы вставили сюда свой код, но обратите внимание на отступ.

...