diff --git a/get_frames.py b/get_frames.py index 252c5d9..8d1f010 100644 --- a/get_frames.py +++ b/get_frames.py @@ -3,14 +3,34 @@ import os.path import os from PIL import Image -# Opens the Video file +############### +# def get_frames(input1) +# ex. get_frames(video.mov) +# +# Task: Extracting frames from a video +# +# Inputs: +# - input1: a video +# +# Output: +# -RGB_avg: a directory with all the frames of the video +# +# author: Loic Delattre and Maryne Dey (loic.delattre@ecam.fr, maryne.dey@ecam.fr) +# date: 06/02/2023 +############### + + video = 'my_face.mov' -path_to_script = os.path.dirname(os.path.abspath(__file__)) -if os.path.exists(path_to_script + r"\frames") == False: - os.mkdir(path_to_script + r"\frames") + def get_frames(vid): + path_to_script = os.path.dirname(os.path.abspath(__file__)) + if os.path.exists(path_to_script + r"\frames") == False: + os.mkdir(path_to_script + r"\frames") + + # Opens the Video file cap= cv2.VideoCapture(vid) + i=0 while cap.isOpened(): ret, img = cap.read() @@ -21,15 +41,15 @@ def get_frames(vid): eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) - faces = face_cascade.detectMultiScale(gray, 1.3, 5) + faces = face_cascade.detectMultiScale(gray, 1.3, 5) #detect the face in the frame for (x,y,w,h) in faces: - # To draw a rectangle in a face + # To draw a rectangle in a face for testing purposes cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,0),2) roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] - eyes = eye_cascade.detectMultiScale(roi_gray) + eyes = eye_cascade.detectMultiScale(roi_gray) #detect the eyes in the frames taking the face as reference list_ex = [] list_ey = [] list_ew = [] @@ -46,10 +66,10 @@ def get_frames(vid): #rectangle on forhead try: - fx = min(list_ex) + list_ew[list_ex.index(min(list_ex))] + fx = min(list_ex) + list_ew[list_ex.index(min(list_ex))] #deducing ROI from the eyes rectangle coordinates fy = max(list_ey) x1 = x + fx - x2 = x + fx + 100 + x2 = x + fx + 100 #extra values in x and y in the parameters are adjustements made after manual testing y1 = y + fy - 150 y2 = y + fy - 20 @@ -59,8 +79,7 @@ def get_frames(vid): i+=1 except: print('error on min value of ex') - #extra values in x and y in the parameters are adjustements made after manual testing - #cv2.rectangle(roi_color, (fx,fy-150),(fx+100,fy-20),(0,127,255),2) + #cv2.rectangle(roi_color, (fx,fy-150),(fx+100,fy-20),(0,127,255),2) #for testing purposes cap.release() cv2.destroyAllWindows()