Fix picam support
This commit is contained in:
parent
e03d5e7872
commit
4cead89259
|
@ -270,48 +270,41 @@ 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')
|
self.cam = self.Picamera2()
|
||||||
# ~ from picamera2 import Picamera2
|
self.picam_config = self.cam.create_video_configuration(main={"format": 'RGB888',"size": (camera_settings['cam_w'], camera_settings['cam_h'])})
|
||||||
# ~ from libcamera import Transform
|
self.picam_config["transform"] = self.Transform(vflip=self.camera_current_settings['vertical_flip']['value'],hflip=self.camera_current_settings['horizontal_flip']['value'])
|
||||||
try:
|
|
||||||
self.cam = self.Picamera2()
|
|
||||||
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=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
|
||||||
# Set Af mode to Auto then Manual (0). Default is Continuous (2), Auto is 1
|
# Set Af mode to Auto then Manual (0). Default is Continuous (2), Auto is 1
|
||||||
self.cam.set_controls({'AfMode':1})
|
self.cam.set_controls({'AfMode':1})
|
||||||
self.cam.start()
|
self.cam.start()
|
||||||
self.cam.autofocus_cycle()
|
self.cam.autofocus_cycle()
|
||||||
self.lenspos = self.cam.capture_metadata()['LensPosition']
|
self.lenspos = self.cam.capture_metadata()['LensPosition']
|
||||||
# Set focus, wb, exp to manual
|
# Set focus, wb, exp to manual
|
||||||
self.camera_default_settings = {'AfMode': 0,
|
self.camera_default_settings = {'AfMode': 0,
|
||||||
'AwbEnable': 1,
|
'AwbEnable': 1,
|
||||||
'AwbMode': self.camera_current_settings['white_balance_auto_preset']['default'],
|
'AwbMode': self.camera_current_settings['white_balance_auto_preset']['default'],
|
||||||
'AeEnable': 1,
|
'AeEnable': 1,
|
||||||
'AeExposureMode': self.camera_current_settings['auto_exposure']['default'],
|
'AeExposureMode': self.camera_current_settings['auto_exposure']['default'],
|
||||||
# Enable flicker avoidance due to mains
|
# Enable flicker avoidance due to mains
|
||||||
'AeFlickerMode': 1,
|
'AeFlickerMode': 1,
|
||||||
# Mains 50hz = 10000, 60hz = 8333
|
# Mains 50hz = 10000, 60hz = 8333
|
||||||
# ~ 'AeFlickerPeriod': 8333,
|
# ~ 'AeFlickerPeriod': 8333,
|
||||||
'AeFlickerPeriod': 10000,
|
'AeFlickerPeriod': 10000,
|
||||||
# Format is (min, max, default) in ms
|
# Format is (min, max, default) in ms
|
||||||
# here: (60fps, 12fps, None)
|
# here: (60fps, 12fps, None)
|
||||||
# ~ '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:
|
||||||
|
|
Loading…
Reference in New Issue