50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
#!/usr/bin/python3
|
|
|
|
import cv2
|
|
import threading
|
|
|
|
# Function to continuously read frames from a camera and display them
|
|
def display_frames(cap, window_name):
|
|
while True:
|
|
ret, frame = cap.read()
|
|
if not ret:
|
|
print(f"Error reading frame from {window_name} camera.")
|
|
break
|
|
|
|
cv2.imshow(window_name, frame)
|
|
|
|
if cv2.waitKey(1) & 0xFF == ord('q'):
|
|
break
|
|
|
|
# Open two video capture objects for each camera
|
|
cap_left = cv2.VideoCapture(1) # Adjust the index if needed
|
|
cap_right = cv2.VideoCapture(2) # Adjust the index if needed
|
|
|
|
# Check if the cameras opened successfully
|
|
if not cap_left.isOpened() or not cap_right.isOpened():
|
|
print("Error: Couldn't open one or both cameras.")
|
|
exit()
|
|
|
|
# Set the width and height of the video capture (adjust as needed)
|
|
cap_left.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
|
|
cap_left.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
|
|
cap_right.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
|
|
cap_right.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
|
|
|
|
# Create threads for each camera
|
|
thread_left = threading.Thread(target=display_frames, args=(cap_left, 'Left Camera'))
|
|
thread_right = threading.Thread(target=display_frames, args=(cap_right, 'Right Camera'))
|
|
|
|
# Start the threads
|
|
thread_left.start()
|
|
thread_right.start()
|
|
|
|
# Wait for the threads to finish (when 'q' is pressed)
|
|
thread_left.join()
|
|
thread_right.join()
|
|
|
|
# Release the video capture objects and close the OpenCV windows
|
|
cap_left.release()
|
|
cap_right.release()
|
|
cv2.destroyAllWindows()
|