Source code for EdiHeadyTrack.video

# **************************************************************************** #
#                                                                              #
#                                                         :::      ::::::::    #
#    video.py                                           :+:      :+:    :+:    #
#                                                     +:+ +:+         +:+      #
#    By: taston <thomas.aston@ed.ac.uk>             +#+  +:+       +#+         #
#                                                 +#+#+#+#+#+   +#+            #
#    Created: 2023/04/25 10:00:46 by taston            #+#    #+#              #
#    Updated: 2023/05/30 10:09:03 by taston           ###   ########.fr        #
#                                                                              #
# **************************************************************************** #

import cv2

[docs] class Video: """ A class representing a Video ... Attributes ---------- cap : filename : str path to video file fps : int framerate in frames per second height : int pixel height of video total_frames : int length of video in frames width : int pixel width of video writer : Methods ------- create_writer() creates video writer object get_dim() gets video dimensions get_fps() gets video fps get_length() gets length of video in frames """ def __init__(self, filename=None): if filename: self.filename = filename self.cap = self._open_vid() self.width, self.height = self.get_dim() self.total_frames = self.get_length() self.fps = self.get_fps() def _open_vid(self): ''' Open specified video file and create capture object ''' cap = cv2.VideoCapture(self.filename) return cap
[docs] def create_writer(self): ''' Create writer object for recording videos based on chosen video. ''' self.writer = cv2.VideoWriter('calibration.mp4', cv2.VideoWriter_fourcc(*'mp4v'), self.fps, (self.width, self.height))
[docs] def get_dim(self): ''' Get video resolution ''' width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) return width, height
[docs] def get_length(self): ''' Get length of video in frames ''' total_frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) return total_frames
[docs] def get_fps(self): ''' Get framerate of video in fps ''' fps = round(self.cap.get(cv2.CAP_PROP_FPS)) return fps
def __str__(self): return ('-'*60 + '\n' + 'Video data:' + '\n' + '-'*60 + '\n' + f'Video resolution: {self.width} x {self.height} pixels' + '\n' + f'Length of video: {self.total_frames} frames' + '\n' + f'Framerate: {self.fps} fps' + '\n' + '-'*60)
# return 'Video'