pupilsense / video.py
vijul.shah
Input Video and Predictions as output video added
9acc552
raw
history blame
1.67 kB
import cv2
import torch
# Load the video
video_path = "path_to_video.mp4"
cap = cv2.VideoCapture(video_path)
# Video properties
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
# Create a VideoWriter object for the output video
out = cv2.VideoWriter("output_with_CAM.mp4", cv2.VideoWriter_fourcc(*"mp4v"), fps, (frame_width, frame_height))
# Process each frame
while True:
ret, frame = cap.read()
if not ret:
break # End of the video
# Detect landmarks for left and right eye bounding boxes (example)
left_eye_bbox = (x_left, y_left, width_left, height_left)
right_eye_bbox = (x_right, y_right, width_right, height_right)
# Crop the eyes
left_eye = frame[y_left : y_left + height_left, x_left : x_left + width_left]
right_eye = frame[y_right : y_right + height_right, x_right : x_right + width_right]
# Generate CAMs for left and right eyes
CAM_left = generate_CAM(left_eye) # Use your model here
CAM_right = generate_CAM(right_eye) # Use your model here
# Resize CAMs if necessary
CAM_left_resized = cv2.resize(CAM_left, (width_left, height_left))
CAM_right_resized = cv2.resize(CAM_right, (width_right, height_right))
# Overlay the CAMs onto the original frame
frame[y_left : y_left + height_left, x_left : x_left + width_left] = CAM_left_resized
frame[y_right : y_right + height_right, x_right : x_right + width_right] = CAM_right_resized
# Write the processed frame to the output video
out.write(frame)
# Release resources
cap.release()
out.release()
cv2.destroyAllWindows()