Skip to content
Snippets Groups Projects
Commit 55bd3155 authored by Rioux Jeremy's avatar Rioux Jeremy
Browse files

changer de camera avec n et b

parent 44d1b493
Branches jejew
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
......@@ -27,7 +27,12 @@ def update(key, vid_mana, session, ui, param, prev_mode, mode):
if key == 27:
param.change_window_mode()
if key == ord('n'):
vid_mana.next_camera()
if key == ord('b'):
vid_mana.prev_camera()
return prev_mode, mode
......
......@@ -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():
......
......@@ -20,36 +20,62 @@ class VideoManager:
if self.video_type == "video":
self.cap = cv2.VideoCapture(self.video_file)
elif self.video_type == "direct":
max_cameras=10
backend=cv2.CAP_DSHOW
available_cameras = []
for i in range(max_cameras):
cap = cv2.VideoCapture(i, backend)
if cap.isOpened():
ret, frame = cap.read()
if ret:
available_cameras.append(i)
cap.release()
print(available_cameras)
self.cap = cv2.VideoCapture(0)
self.list_cameras = self.search_cameras()
if len(self.list_cameras) == 0:
raise ValueError("Aucune caméra disponible.")
self.index = 0
self.cap = cv2.VideoCapture(self.list_cameras[self.index])
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
self.parameters = parameters
self.start_time = time.time()
self.current_time = time.time()
self.time = self.current_time - self.start_time
self.sound = sound
self.init_frame()
def init_frame(self):
_, self.frame = self.cap.read()
if self.frame is None:
raise ValueError("Impossible de charger les images. Vérifiez les chemins des fichiers.")
self.frame = cv2.resize(self.frame, (self.parameters.width, self.parameters.height))
self.current_frame = int(self.cap.get(cv2.CAP_PROP_POS_FRAMES))
self.start_time = time.time()
self.current_time = time.time()
self.time = self.current_time - self.start_time
def next_camera(self):
self.index += 1
if self.index >= len(self.list_cameras):
self.index = 0
self.cap.release()
self.cap = cv2.VideoCapture(self.list_cameras[self.index])
self.init_frame()
def prev_camera(self):
self.index -= 1
if self.index < 0:
self.index = len(self.list_cameras) - 1
self.cap.release()
self.cap = cv2.VideoCapture(self.list_cameras[self.index])
self.init_frame()
self.sound = sound
def search_cameras(self):
max_cameras=10
backend=cv2.CAP_DSHOW
available_cameras = []
for i in range(max_cameras):
cap = cv2.VideoCapture(i, backend)
if cap.isOpened():
ret, frame = cap.read()
if ret:
available_cameras.append(i)
cap.release()
return available_cameras
def play_sound(self):
# Initialiser pygame pour l'audio
pygame.mixer.init()
......
import cv2
from goprocam import GoProCamera
def list_and_preview_cameras(max_cams=5):
print("Recherche des caméras disponibles...")
cameras = []
for i in range(max_cams):
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
if ret:
cam_name = f"Caméra {i}"
cameras.append((i, cam_name, frame))
cap.release()
return cameras
def select_camera(cameras):
print("Caméras détectées :")
for idx, (cam_index, cam_name, _) in enumerate(cameras):
print(f"{idx}: {cam_name}")
cv2.imshow(f"{cam_name} (ferme avec n'importe quelle touche)", cameras[idx][2])
cv2.waitKey(0)
cv2.destroyAllWindows()
selected = input("Entrez le numéro de la caméra que vous souhaitez utiliser : ")
try:
selected_index = int(selected)
if 0 <= selected_index < len(cameras):
return cameras[selected_index][0] # retourne l'index OpenCV de la caméra
except ValueError:
pass
print("Sélection invalide.")
return None
def record_and_display(camera_index):
cap = cv2.VideoCapture(camera_index)
out = cv2.VideoWriter('gopro_output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30.0, (640, 480))
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('GoPro Video', frame)
out.write(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
print("Connexion à la GoPro...")
gopro = GoProCamera.GoPro()
gopro.webcamFOV("medium")
gopro.startWebcam()
available_cams = list_and_preview_cameras()
if not available_cams:
print("Aucune caméra détectée.")
else:
selected_cam = select_camera(available_cams)
if selected_cam is not None:
record_and_display(selected_cam)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment