|
|
@ -0,0 +1,52 @@ |
|
|
|
import cv2 |
|
|
|
from pywt.version import release |
|
|
|
|
|
|
|
|
|
|
|
class cvStreamer(): |
|
|
|
def __init__(self, idx): |
|
|
|
self.cap = cv2.VideoCapture(idx) |
|
|
|
self.idx = idx |
|
|
|
|
|
|
|
def isOpened(self): |
|
|
|
isOpen = self.cap.isOpened() |
|
|
|
|
|
|
|
if not isOpen: |
|
|
|
self.release() |
|
|
|
else: |
|
|
|
print(f"usb cam open at {self.idx}") |
|
|
|
|
|
|
|
|
|
|
|
return isOpen |
|
|
|
|
|
|
|
def release(self): |
|
|
|
self.cap.release() |
|
|
|
|
|
|
|
def get_frame(self): |
|
|
|
_, frame = self.cap.read() |
|
|
|
|
|
|
|
# Get the original dimensions of the frame |
|
|
|
height, width = frame.shape[:2] |
|
|
|
|
|
|
|
# Define the maximum dimensions |
|
|
|
max_width = 1920 |
|
|
|
max_height = 1080 |
|
|
|
|
|
|
|
# Calculate the aspect ratio |
|
|
|
aspect_ratio = width / height |
|
|
|
|
|
|
|
# Resize the frame if it exceeds the maximum dimensions |
|
|
|
if width > max_width or height > max_height: |
|
|
|
if aspect_ratio > 1: # Landscape orientation |
|
|
|
new_width = max_width |
|
|
|
new_height = int(new_width / aspect_ratio) |
|
|
|
else: # Portrait orientation |
|
|
|
new_height = max_height |
|
|
|
new_width = int(new_height * aspect_ratio) |
|
|
|
|
|
|
|
# Resize the frame |
|
|
|
frame = cv2.resize(frame, (new_width, new_height)) |
|
|
|
|
|
|
|
return frame |
|
|
|
|
|
|
|
def __del__(self): |
|
|
|
self.release() |