Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cv2
- import numpy
- class VideoOperator(cv2.VideoCapture):
- def __init__(self, video_path):
- super().__init__(video_path)
- self.current_frame_index = 0
- self.last_frame_index = int(self.get(cv2.CAP_PROP_FRAME_COUNT) - 1)
- def move_to_frame(self, frame_index):
- if frame_index > self.last_frame_index:
- self.set(cv2.CAP_PROP_POS_FRAMES, self.last_frame_index)
- self.current_frame_index = self.last_frame_index
- elif frame_index < 0:
- self.set(cv2.CAP_PROP_POS_FRAMES, 0)
- self.current_frame_index = 0
- else:
- print(type(self))
- self.set(cv2.CAP_PROP_POS_FRAMES, frame_index)
- self.current_frame_index = frame_index
- def set_frame_position(self, frame_index):
- self.set(cv2.CAP_PROP_POS_FRAMES, frame_index)
- self.current_frame_index = frame_index
- def move_x_frames(self, x):
- self.move_to_frame(self.current_frame_index + x)
- def get_current_frame(self):
- _, image = self.read()
- self.move_to_frame(self.current_frame_index)
- return image
- if __name__ == "__main__":
- for i in range(5):
- vc = VideoOperator('vid1.mp4')
- vc.move_to_frame(vc.last_frame_index)
- vc.move_x_frames(60)
- # print(vc.current_frame_index)
- # vc.move_x_frames(20)
- # print(vc.current_frame_index)
- # success,image = vc.read()
- # vc.move_to_frame(0)
- # success2,image2 = vc.read()
- # print(numpy.array_equal(image2, image))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement