diff --git a/Objet/__pycache__/video_manager.cpython-311.pyc b/Objet/__pycache__/video_manager.cpython-311.pyc index c623ba62a664db4291ff0bcd6d3ac8e8a776ffc8..8643a0c9f14decf6e2fac57215d802b78fa5b6b9 100644 Binary files a/Objet/__pycache__/video_manager.cpython-311.pyc and b/Objet/__pycache__/video_manager.cpython-311.pyc differ diff --git a/Objet/main.py b/Objet/main.py index f4e687c1ddda29fc0b0b828878d0358031cc002e..097fa7429c68a5fb966891edb17aedbd3ec8d343 100644 --- a/Objet/main.py +++ b/Objet/main.py @@ -68,7 +68,7 @@ class Main: cv2.destroyAllWindows() if __name__ == "__main__": - main = Main("vid4.mp4", "video") + main = Main("vid4.mp4", "direct") main.run() def is_ready(): diff --git a/Objet/video_manager.py b/Objet/video_manager.py index 5941a34ad034ee5e6faa1b2d1b5e0431968e467f..dc367c057b9a9c72352ba98ecb4b0645517bfb88 100644 --- a/Objet/video_manager.py +++ b/Objet/video_manager.py @@ -19,10 +19,8 @@ class VideoManager: self.video_type = video_type if self.video_type == "video": self.cap = cv2.VideoCapture(self.video_file) - elif self.video_type == "camera": - self.cam_index = self.select_camera() - self.cam_index = 0 - self.cap = cv2.VideoCapture(self.cam_index) + elif self.video_type == "direct": + self.cap = cv2.VideoCapture(0) self.fps = int(self.cap.get(cv2.CAP_PROP_FPS)) self.total_frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) self.over = False @@ -68,20 +66,24 @@ class VideoManager: def update_frame(self): - frame_time = time.time() - self.current_time - self.current_time = time.time() - self.time = self.current_time - self.start_time - self.current_frame = int(self.cap.get(cv2.CAP_PROP_POS_FRAMES)) - frame_targeted = int(self.time * self.fps) - jump_frame = frame_targeted - self.current_frame - - for _ in range(jump_frame): - ret, self.frame = self.cap.read() - if not ret: - self.over = True - break - self.frame = cv2.resize(self.frame, (self.parameters.width, self.parameters.height)) - self.current_frame += 1 + if self.video_type == "video": + self.current_time = time.time() + self.time = self.current_time - self.start_time + self.current_frame = int(self.cap.get(cv2.CAP_PROP_POS_FRAMES)) + frame_targeted = int(self.time * self.fps) + jump_frame = frame_targeted - self.current_frame + + for _ in range(jump_frame): + ret, self.frame = self.cap.read() + if not ret: + self.over = True + break + self.frame = cv2.resize(self.frame, (self.parameters.width, self.parameters.height)) + self.current_frame += 1 + + elif self.video_type == "direct": + self.update_frame_easy() + self.current_frame += 1 def update_frame_easy(self): _, self.frame = self.cap.read()