Fix picam support

This commit is contained in:
ABelliqueux 2025-02-15 10:41:26 +01:00
parent e03d5e7872
commit 4cead89259
4 changed files with 113 additions and 120 deletions

View File

@ -270,15 +270,10 @@ class picam():
# Pi Cam V3 setup # Pi Cam V3 setup
self.Picamera2 = getattr(import_module('picamera2'), 'Picamera2') self.Picamera2 = getattr(import_module('picamera2'), 'Picamera2')
self.Transform = getattr(import_module('libcamera'), 'Transform') self.Transform = getattr(import_module('libcamera'), 'Transform')
# ~ self.Picamera2 = __import__('picamera2.Picamera2') # Cam setup
# ~ self.Transform = __import__('libcamera.Transform')
# ~ from picamera2 import Picamera2
# ~ from libcamera import Transform
try:
self.cam = self.Picamera2() self.cam = self.Picamera2()
self.picam_config = self.cam.create_video_configuration(main={"format": 'RGB888',"size": (camera_settings['cam_w'], camera_settings['cam_h'])}) self.picam_config = self.cam.create_video_configuration(main={"format": 'RGB888',"size": (camera_settings['cam_w'], camera_settings['cam_h'])})
# ~ picam_config["transform"] = Transform(hflip=camera_settings['hflip'], vflip=camera_settings['vflip']) self.picam_config["transform"] = self.Transform(vflip=self.camera_current_settings['vertical_flip']['value'],hflip=self.camera_current_settings['horizontal_flip']['value'])
self.picam_config["transform"] = self.Transform(vflip=camera_current_settings['vertical_flip']['value'],hflip=camera_current_settings['horizontal_flip']['value'])
self.cam.configure(self.picam_config) self.cam.configure(self.picam_config)
# Autofocus, get lens position and switch to manual mode # Autofocus, get lens position and switch to manual mode
@ -303,15 +298,13 @@ class picam():
# ~ 'FrameDurationLimits':(16666,83333,None) # ~ 'FrameDurationLimits':(16666,83333,None)
} }
self.cam.set_controls(self.camera_default_settings) self.cam.set_controls(self.camera_default_settings)
except:
pass
def test_device(self, source): def test_device(self, source):
pass pass
# Same as in webcam() class # Same as in webcam() class
def capture_preview(self): def capture_preview(self):
overlay = cam.capture_array("main") overlay = self.cam.capture_array("main")
# Resize preview to fit screen # Resize preview to fit screen
overlay = cv2.resize(overlay, (project_settings['screen_w'], project_settings['screen_h'])) overlay = cv2.resize(overlay, (project_settings['screen_w'], project_settings['screen_h']))
if self.liveview_only: if self.liveview_only: