Снимок экрана в момент обнаружения лица - PullRequest
1 голос
/ 09 апреля 2019

я должен создать код, который снимает скриншот при обнаружении лица в видео, чтобы изображение можно было использовать для набора данных распознавания изображений

Я сделал программу, которая захватывает все кадры, но мне нужно, чтобы она захватывала только при обнаружении лица

import cv2
cap = cv2.VideoCapture('test.mp4')
count = 0
while cap.isOpened():
    ret,frame = cap.read()
    cv2.imshow('window-name',frame)
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.imwrite("frame%d.jpg" % count, frame)
        count = count + 1
    if cv2.waitKey(10) & 0xFF == ord('q'):
       break


cap.release()
cv2.destroyAllWindows()  # destroy all the opened windows

1 Ответ

0 голосов
/ 09 апреля 2019

Я только что попробовал ваш код, и в нем есть 1 маленькая ошибка. Вы не указали путь к классификатору XML правильно. Я исправил путь, используя полный путь, где файл XML находится и успешно работает.

import cv2
import numpy as np

cap = cv2.VideoCapture('test.mp4')
#cap = cv2.VideoCapture(0) # I tried using webcam and works
count = 0
while cap.isOpened():
    ret,frame = cap.read()
    cv2.imshow('window-name',frame)
    # Below you have to insert the full path of XML file, below is mine
    face_cascade = cv2.CascadeClassifier('C:/ProgramData/Anaconda2/pkgs/opencv-3.2.0-np111py27_0/Library/etc/haarcascades/haarcascade_frontalface_default.xml')
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.imwrite("frame%d.jpg" % count, frame)
        count = count + 1
    if cv2.waitKey(10) & 0xFF == ord('q'):
       break

cap.release()
cv2.destroyAllWindows()  # destroy all the opened windows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...