Added a useful read_config method to BaseCamera
This commit is contained in:
parent
33af3bf48c
commit
1c67b96895
3 changed files with 20 additions and 7 deletions
|
|
@ -137,12 +137,16 @@ class BaseCamera(metaclass=ABCMeta):
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def apply_config(self, config: dict):
|
def apply_config(self, config: dict):
|
||||||
"""Update settings from a config dictionary"""
|
"""Update settings from a config dictionary"""
|
||||||
pass
|
with self.lock:
|
||||||
|
# Apply valid config params to camera object
|
||||||
|
for key, value in config.items(): # For each provided setting
|
||||||
|
if hasattr(self, key): # If the instance has a matching property
|
||||||
|
setattr(self, key, value) # Set to the target value
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def read_config(self) -> dict:
|
def read_config(self) -> dict:
|
||||||
"""Return the current settings as a dictionary"""
|
"""Return the current settings as a dictionary"""
|
||||||
pass
|
return {"paths": self.paths}
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
"""Create camera on context enter."""
|
"""Create camera on context enter."""
|
||||||
|
|
|
||||||
|
|
@ -75,12 +75,16 @@ class MockStreamer(BaseCamera):
|
||||||
Return config dictionary of the PiCameraStreamer.
|
Return config dictionary of the PiCameraStreamer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
conf_dict = {
|
# Get config items from the base class
|
||||||
|
conf_dict = BaseCamera.read_config(self)
|
||||||
|
|
||||||
|
# Include device-specific config items
|
||||||
|
conf_dict.update({
|
||||||
"stream_resolution": self.stream_resolution,
|
"stream_resolution": self.stream_resolution,
|
||||||
"image_resolution": self.image_resolution,
|
"image_resolution": self.image_resolution,
|
||||||
"numpy_resolution": self.numpy_resolution,
|
"numpy_resolution": self.numpy_resolution,
|
||||||
"jpeg_quality": self.jpeg_quality,
|
"jpeg_quality": self.jpeg_quality,
|
||||||
}
|
})
|
||||||
|
|
||||||
return conf_dict
|
return conf_dict
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,15 +109,20 @@ class PiCameraStreamer(BaseCamera):
|
||||||
Return config dictionary of the PiCameraStreamer.
|
Return config dictionary of the PiCameraStreamer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
conf_dict = {
|
# Get config items from the base class
|
||||||
|
conf_dict = BaseCamera.read_config(self)
|
||||||
|
|
||||||
|
# Include device-specific config items
|
||||||
|
conf_dict.update({
|
||||||
"stream_resolution": self.stream_resolution,
|
"stream_resolution": self.stream_resolution,
|
||||||
"image_resolution": self.image_resolution,
|
"image_resolution": self.image_resolution,
|
||||||
"numpy_resolution": self.numpy_resolution,
|
"numpy_resolution": self.numpy_resolution,
|
||||||
"jpeg_quality": self.jpeg_quality,
|
"jpeg_quality": self.jpeg_quality,
|
||||||
"picamera_settings": {},
|
"picamera_settings": {},
|
||||||
}
|
})
|
||||||
|
|
||||||
# PiCamera parameters
|
# Include a subset of picamera properties
|
||||||
|
# TODO: Expand this subset so we have more metadata?
|
||||||
for key in PiCameraStreamer.picamera_settings_keys:
|
for key in PiCameraStreamer.picamera_settings_keys:
|
||||||
try:
|
try:
|
||||||
value = getattr(self.camera, key)
|
value = getattr(self.camera, key)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue