Как я могу захватить обнаруженные изображения лица в opencv, чтобы сделать базу данных? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь зарегистрировать лица пользователя в opencv для распознавания лиц. Я закончил часть обнаружения, но то, чего я хотел добиться, - это сохранить обнаруженные лица. В общем, чего я хотел добиться, так это: когда я вижу в веб-камере, он автоматически захватывает 20-30 или n изображений и сохраняет их локально.

В настоящее время я пытаюсь просто сохранить 1 изображение при нажатии какой-либо клавиши, программа работает нормально, но ничего не сохраняется локально. Вот код

import cv2
import os
cascade = cv2.CascadeClassifier("../haar-cascade-files-master/haar-cascade-files-master/haarcascade_frontalface_alt2.xml")
cap = cv2.VideoCapture(0)
while True:
    ret,frame = cap.read(0)
#     gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    faces = cascade.detectMultiScale(frame,1.1,5)
    orig = frame.copy()
    for (x,y,w,h) in faces:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
    cv2.imshow("Video ",frame)
    if cv2.waitKey(2) & 0xFF == 27:
        break
    elif cv2.waitKey(2) & 0xFF == ord('s'):
        faceimg=frame[y:y+h,x:x+w]
        cv2.imwrite("../images/facec.jpeg",faceimg)
#     cv2.imshow("Crop Image",faceimg)
cap.release()
cv2.destroyAllWindows()

Так что же не так в коде и как можно я автоматически сохраняю нет изображений.

1 Ответ

1 голос
/ 05 февраля 2020

Если в данном сценарии на камеру смотрит только один человек, вы можете использовать счетчик.

N = 20
cnt = 0
while True:
    ...
    ...
    # If the frame contains only one face
    for (x,y,w,h) in faces:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
        faceimg=frame[y:y+h,x:x+w]
        cv2.imwrite("../images/face_"+str(cnt)+".jpeg",faceimg)
    cnt = cnt + 1
    if cnt == N:
        cnt = 0
    ...
    ...


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...