2016-04-06 7 views
2

Я работаю над проектом распознавания лиц с моим колледжем. что я пытаюсь сделать снимок и сохранить его, если лицо обнаружено автоматически до закрытия веб-камеры. Теперь у меня есть открытая камера и подождите, если обнаружено лицо, и нажмите «q», чтобы сделать снимок и сохранить изображение. Вот код:авто обнаружить лицо и сделать снимок с opencv

import numpy as np 
import cv2 
import time 

#import the cascade for face detection 
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 



def TakeSnapshotAndSave(): 
    # access the webcam (every webcam has a number, the default is 0) 
    cap = cv2.VideoCapture(0) 

    while(True): 
     # Capture frame-by-frame 
     ret, frame = cap.read() 

     # to detect faces in video 
     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
     faces = face_cascade.detectMultiScale(gray, 1.3, 5) 

     for (x,y,w,h) in faces: 
      cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2) 
      roi_gray = gray[y:y+h, x:x+w] 
      roi_color = frame[y:y+h, x:x+w] 

     x = 0 
     y = 20 
     text_color = (0,255,0) 
     # write on the live stream video 
     cv2.putText(frame, "Press q when ready", (x,y), cv2.FONT_HERSHEY_PLAIN, 1.0, text_color, thickness=2) 


     # if you want to convert it to gray uncomment and display gray not fame 
     #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

     # Display the resulting frame 
     cv2.imshow('frame',frame) 
     # press the letter "q" to save the picture 
     if cv2.waitKey(1) & 0xFF == ord('q'): 
      # write the captured image with this name 
      cv2.imwrite('try.jpg',frame) 
      break 

    # When everything done, release the capture 
    cap.release() 
    cv2.destroyAllWindows() 


if __name__ == "__main__": 
    TakeSnapshotAndSave() 

спасибо заранее

+0

good idea, im going try it and let u know if it works. благодаря –

ответ

0

Выполните imwrite() в течение (х, у, ш, ч) в забоях: самого цикла. Если вы используете постоянное имя файла, ваше последнее обнаруженное лицо будет сохранено, а остальное будет перезаписано.

0

Я адаптировал ваш код, чтобы сохранить 10 изображений только для тестирования, если вы хотите бесконечные фотографии, просто измените условие. Таким образом, в вашем коде вы переписываете текущее изображение, поэтому я изменил параметр строки, чтобы можно было делать много фотографий.

import numpy as np 
import cv2 
import time 

#import the cascade for face detection 
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 

def TakeSnapshotAndSave(): 
    # access the webcam (every webcam has a number, the default is 0) 
    cap = cv2.VideoCapture(0) 

    num = 0 
    while num<10: 
     # Capture frame-by-frame 
     ret, frame = cap.read() 

     # to detect faces in video 
     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
     faces = face_cascade.detectMultiScale(gray, 1.3, 5) 

     for (x,y,w,h) in faces: 
      cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2) 
      roi_gray = gray[y:y+h, x:x+w] 
      roi_color = frame[y:y+h, x:x+w] 

     x = 0 
     y = 20 
     text_color = (0,255,0) 

     cv2.imwrite('opencv'+str(num)+'.jpg',frame) 
     num = num+1 

    # When everything done, release the capture 
    cap.release() 
    cv2.destroyAllWindows() 


if __name__ == "__main__": 
    TakeSnapshotAndSave() 

 Смежные вопросы

  • Нет связанных вопросов^_^