mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-29 14:16:31 +00:00
raspberrypi: various fast network camera improvements
This commit is contained in:
parent
824361cf1d
commit
ffbc49a5d6
@ -72,7 +72,7 @@ DRC_CHOICES = [
|
|||||||
('off', 'Off'),
|
('off', 'Off'),
|
||||||
('low', 'Low'),
|
('low', 'Low'),
|
||||||
('medium', 'Medium'),
|
('medium', 'Medium'),
|
||||||
('hight', 'High')
|
('high', 'High')
|
||||||
]
|
]
|
||||||
|
|
||||||
IMXFX_CHOICES = [
|
IMXFX_CHOICES = [
|
||||||
@ -288,6 +288,7 @@ def _set_motioneye_add_remove_cameras(enabled):
|
|||||||
|
|
||||||
def _get_raspimjpeg_settings(camera_id):
|
def _get_raspimjpeg_settings(camera_id):
|
||||||
s = {
|
s = {
|
||||||
|
'preview': False,
|
||||||
'brightness': 50,
|
'brightness': 50,
|
||||||
'contrast': 0,
|
'contrast': 0,
|
||||||
'saturation': 0,
|
'saturation': 0,
|
||||||
@ -300,6 +301,7 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'metering': 'average',
|
'metering': 'average',
|
||||||
'drc': 'off',
|
'drc': 'off',
|
||||||
'vstab': False,
|
'vstab': False,
|
||||||
|
'denoise': False,
|
||||||
'imxfx': 'none',
|
'imxfx': 'none',
|
||||||
'width': 640,
|
'width': 640,
|
||||||
'height': 480,
|
'height': 480,
|
||||||
@ -307,7 +309,11 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'vflip': False,
|
'vflip': False,
|
||||||
'hflip': False,
|
'hflip': False,
|
||||||
'framerate': 15,
|
'framerate': 15,
|
||||||
'quality': 25
|
'quality': 25,
|
||||||
|
'zoomx': 0,
|
||||||
|
'zoomy': 0,
|
||||||
|
'zoomw': 100,
|
||||||
|
'zoomh': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
if os.path.exists(RASPIMJPEG_CONF):
|
if os.path.exists(RASPIMJPEG_CONF):
|
||||||
@ -338,6 +344,19 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
|
|
||||||
elif value == 'true':
|
elif value == 'true':
|
||||||
value = True
|
value = True
|
||||||
|
|
||||||
|
if name == 'zoom':
|
||||||
|
try:
|
||||||
|
parts = value.split(',')
|
||||||
|
s['zoomx'] = int(float(parts[0]) * 100)
|
||||||
|
s['zoomy'] = int(float(parts[1]) * 100)
|
||||||
|
s['zoomw'] = int(float(parts[2]) * 100)
|
||||||
|
s['zoomh'] = int(float(parts[3]) * 100)
|
||||||
|
|
||||||
|
except:
|
||||||
|
logging.error('failed to parse zoom setting "%s"' % value)
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
s[name] = value
|
s[name] = value
|
||||||
|
|
||||||
@ -357,6 +376,10 @@ def _set_raspimjpeg_settings(camera_id, s):
|
|||||||
|
|
||||||
s['width'] = int(s['resolution'].split('x')[0])
|
s['width'] = int(s['resolution'].split('x')[0])
|
||||||
s['height'] = int(s.pop('resolution').split('x')[1])
|
s['height'] = int(s.pop('resolution').split('x')[1])
|
||||||
|
|
||||||
|
s['zoom'] = '%.2f,%.2f,%.2f,%.2f' % (
|
||||||
|
s.pop('zoomx') / 100.0, s.pop('zoomy') / 100.0,
|
||||||
|
s.pop('zoomw') / 100.0, s.pop('zoomh') / 100.0)
|
||||||
|
|
||||||
s['contrast'] = s['contrast'] * 2 - 100
|
s['contrast'] = s['contrast'] * 2 - 100
|
||||||
s['saturation'] = s['saturation'] * 2 - 100
|
s['saturation'] = s['saturation'] * 2 - 100
|
||||||
@ -759,6 +782,124 @@ def seQuality():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomx():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom X',
|
||||||
|
'description': 'sets the horizontal zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomy():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Y',
|
||||||
|
'description': 'sets the vertical zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomw():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Width',
|
||||||
|
'description': 'sets the zoom width',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomh():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Height',
|
||||||
|
'description': 'sets the zoom height',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def sePreview():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'HDMI Preview',
|
||||||
|
'description': 'enable this if you want to see the preview on an HDMI-connected monitor',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def streamEyeCameraSeparator3():
|
def streamEyeCameraSeparator3():
|
||||||
return {
|
return {
|
||||||
@ -794,31 +935,6 @@ def seIso():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
|
||||||
def seEv():
|
|
||||||
if not _get_streameye_enabled():
|
|
||||||
return None
|
|
||||||
|
|
||||||
return {
|
|
||||||
'label': 'EV Compensation',
|
|
||||||
'description': 'sets a desired EV compensation level for this camera',
|
|
||||||
'type': 'range',
|
|
||||||
'min': -25,
|
|
||||||
'max': 25,
|
|
||||||
'snap': 1,
|
|
||||||
'ticksnum': 11,
|
|
||||||
'decimals': 0,
|
|
||||||
'unit': '',
|
|
||||||
'section': 'device',
|
|
||||||
'advanced': True,
|
|
||||||
'camera': True,
|
|
||||||
'required': True,
|
|
||||||
'get': _get_raspimjpeg_settings,
|
|
||||||
'set': _set_raspimjpeg_settings,
|
|
||||||
'get_set_dict': True
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seShutter():
|
def seShutter():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -871,6 +987,31 @@ def seExposure():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seEv():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Exposure Compensation',
|
||||||
|
'description': 'sets a desired exposure compensation for this camera',
|
||||||
|
'type': 'range',
|
||||||
|
'min': -25,
|
||||||
|
'max': 25,
|
||||||
|
'snap': 1,
|
||||||
|
'ticksnum': 11,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seAwb():
|
def seAwb():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -950,6 +1091,25 @@ def seVstab():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seDenoise():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Denoise',
|
||||||
|
'description': 'enables image denoising',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seImxfx():
|
def seImxfx():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
|
@ -72,7 +72,7 @@ DRC_CHOICES = [
|
|||||||
('off', 'Off'),
|
('off', 'Off'),
|
||||||
('low', 'Low'),
|
('low', 'Low'),
|
||||||
('medium', 'Medium'),
|
('medium', 'Medium'),
|
||||||
('hight', 'High')
|
('high', 'High')
|
||||||
]
|
]
|
||||||
|
|
||||||
IMXFX_CHOICES = [
|
IMXFX_CHOICES = [
|
||||||
@ -288,6 +288,7 @@ def _set_motioneye_add_remove_cameras(enabled):
|
|||||||
|
|
||||||
def _get_raspimjpeg_settings(camera_id):
|
def _get_raspimjpeg_settings(camera_id):
|
||||||
s = {
|
s = {
|
||||||
|
'preview': False,
|
||||||
'brightness': 50,
|
'brightness': 50,
|
||||||
'contrast': 0,
|
'contrast': 0,
|
||||||
'saturation': 0,
|
'saturation': 0,
|
||||||
@ -300,6 +301,7 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'metering': 'average',
|
'metering': 'average',
|
||||||
'drc': 'off',
|
'drc': 'off',
|
||||||
'vstab': False,
|
'vstab': False,
|
||||||
|
'denoise': False,
|
||||||
'imxfx': 'none',
|
'imxfx': 'none',
|
||||||
'width': 640,
|
'width': 640,
|
||||||
'height': 480,
|
'height': 480,
|
||||||
@ -307,7 +309,11 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'vflip': False,
|
'vflip': False,
|
||||||
'hflip': False,
|
'hflip': False,
|
||||||
'framerate': 15,
|
'framerate': 15,
|
||||||
'quality': 25
|
'quality': 25,
|
||||||
|
'zoomx': 0,
|
||||||
|
'zoomy': 0,
|
||||||
|
'zoomw': 100,
|
||||||
|
'zoomh': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
if os.path.exists(RASPIMJPEG_CONF):
|
if os.path.exists(RASPIMJPEG_CONF):
|
||||||
@ -338,6 +344,19 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
|
|
||||||
elif value == 'true':
|
elif value == 'true':
|
||||||
value = True
|
value = True
|
||||||
|
|
||||||
|
if name == 'zoom':
|
||||||
|
try:
|
||||||
|
parts = value.split(',')
|
||||||
|
s['zoomx'] = int(float(parts[0]) * 100)
|
||||||
|
s['zoomy'] = int(float(parts[1]) * 100)
|
||||||
|
s['zoomw'] = int(float(parts[2]) * 100)
|
||||||
|
s['zoomh'] = int(float(parts[3]) * 100)
|
||||||
|
|
||||||
|
except:
|
||||||
|
logging.error('failed to parse zoom setting "%s"' % value)
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
s[name] = value
|
s[name] = value
|
||||||
|
|
||||||
@ -357,6 +376,10 @@ def _set_raspimjpeg_settings(camera_id, s):
|
|||||||
|
|
||||||
s['width'] = int(s['resolution'].split('x')[0])
|
s['width'] = int(s['resolution'].split('x')[0])
|
||||||
s['height'] = int(s.pop('resolution').split('x')[1])
|
s['height'] = int(s.pop('resolution').split('x')[1])
|
||||||
|
|
||||||
|
s['zoom'] = '%.2f,%.2f,%.2f,%.2f' % (
|
||||||
|
s.pop('zoomx') / 100.0, s.pop('zoomy') / 100.0,
|
||||||
|
s.pop('zoomw') / 100.0, s.pop('zoomh') / 100.0)
|
||||||
|
|
||||||
s['contrast'] = s['contrast'] * 2 - 100
|
s['contrast'] = s['contrast'] * 2 - 100
|
||||||
s['saturation'] = s['saturation'] * 2 - 100
|
s['saturation'] = s['saturation'] * 2 - 100
|
||||||
@ -759,6 +782,124 @@ def seQuality():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomx():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom X',
|
||||||
|
'description': 'sets the horizontal zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomy():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Y',
|
||||||
|
'description': 'sets the vertical zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomw():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Width',
|
||||||
|
'description': 'sets the zoom width',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomh():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Height',
|
||||||
|
'description': 'sets the zoom height',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def sePreview():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'HDMI Preview',
|
||||||
|
'description': 'enable this if you want to see the preview on an HDMI-connected monitor',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def streamEyeCameraSeparator3():
|
def streamEyeCameraSeparator3():
|
||||||
return {
|
return {
|
||||||
@ -794,31 +935,6 @@ def seIso():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
|
||||||
def seEv():
|
|
||||||
if not _get_streameye_enabled():
|
|
||||||
return None
|
|
||||||
|
|
||||||
return {
|
|
||||||
'label': 'EV Compensation',
|
|
||||||
'description': 'sets a desired EV compensation level for this camera',
|
|
||||||
'type': 'range',
|
|
||||||
'min': -25,
|
|
||||||
'max': 25,
|
|
||||||
'snap': 1,
|
|
||||||
'ticksnum': 11,
|
|
||||||
'decimals': 0,
|
|
||||||
'unit': '',
|
|
||||||
'section': 'device',
|
|
||||||
'advanced': True,
|
|
||||||
'camera': True,
|
|
||||||
'required': True,
|
|
||||||
'get': _get_raspimjpeg_settings,
|
|
||||||
'set': _set_raspimjpeg_settings,
|
|
||||||
'get_set_dict': True
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seShutter():
|
def seShutter():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -871,6 +987,31 @@ def seExposure():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seEv():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Exposure Compensation',
|
||||||
|
'description': 'sets a desired exposure compensation for this camera',
|
||||||
|
'type': 'range',
|
||||||
|
'min': -25,
|
||||||
|
'max': 25,
|
||||||
|
'snap': 1,
|
||||||
|
'ticksnum': 11,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seAwb():
|
def seAwb():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -950,6 +1091,25 @@ def seVstab():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seDenoise():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Denoise',
|
||||||
|
'description': 'enables image denoising',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seImxfx():
|
def seImxfx():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
|
@ -72,7 +72,7 @@ DRC_CHOICES = [
|
|||||||
('off', 'Off'),
|
('off', 'Off'),
|
||||||
('low', 'Low'),
|
('low', 'Low'),
|
||||||
('medium', 'Medium'),
|
('medium', 'Medium'),
|
||||||
('hight', 'High')
|
('high', 'High')
|
||||||
]
|
]
|
||||||
|
|
||||||
IMXFX_CHOICES = [
|
IMXFX_CHOICES = [
|
||||||
@ -288,6 +288,7 @@ def _set_motioneye_add_remove_cameras(enabled):
|
|||||||
|
|
||||||
def _get_raspimjpeg_settings(camera_id):
|
def _get_raspimjpeg_settings(camera_id):
|
||||||
s = {
|
s = {
|
||||||
|
'preview': False,
|
||||||
'brightness': 50,
|
'brightness': 50,
|
||||||
'contrast': 0,
|
'contrast': 0,
|
||||||
'saturation': 0,
|
'saturation': 0,
|
||||||
@ -300,6 +301,7 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'metering': 'average',
|
'metering': 'average',
|
||||||
'drc': 'off',
|
'drc': 'off',
|
||||||
'vstab': False,
|
'vstab': False,
|
||||||
|
'denoise': False,
|
||||||
'imxfx': 'none',
|
'imxfx': 'none',
|
||||||
'width': 640,
|
'width': 640,
|
||||||
'height': 480,
|
'height': 480,
|
||||||
@ -307,7 +309,11 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
'vflip': False,
|
'vflip': False,
|
||||||
'hflip': False,
|
'hflip': False,
|
||||||
'framerate': 15,
|
'framerate': 15,
|
||||||
'quality': 25
|
'quality': 25,
|
||||||
|
'zoomx': 0,
|
||||||
|
'zoomy': 0,
|
||||||
|
'zoomw': 100,
|
||||||
|
'zoomh': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
if os.path.exists(RASPIMJPEG_CONF):
|
if os.path.exists(RASPIMJPEG_CONF):
|
||||||
@ -338,6 +344,19 @@ def _get_raspimjpeg_settings(camera_id):
|
|||||||
|
|
||||||
elif value == 'true':
|
elif value == 'true':
|
||||||
value = True
|
value = True
|
||||||
|
|
||||||
|
if name == 'zoom':
|
||||||
|
try:
|
||||||
|
parts = value.split(',')
|
||||||
|
s['zoomx'] = int(float(parts[0]) * 100)
|
||||||
|
s['zoomy'] = int(float(parts[1]) * 100)
|
||||||
|
s['zoomw'] = int(float(parts[2]) * 100)
|
||||||
|
s['zoomh'] = int(float(parts[3]) * 100)
|
||||||
|
|
||||||
|
except:
|
||||||
|
logging.error('failed to parse zoom setting "%s"' % value)
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
s[name] = value
|
s[name] = value
|
||||||
|
|
||||||
@ -357,6 +376,10 @@ def _set_raspimjpeg_settings(camera_id, s):
|
|||||||
|
|
||||||
s['width'] = int(s['resolution'].split('x')[0])
|
s['width'] = int(s['resolution'].split('x')[0])
|
||||||
s['height'] = int(s.pop('resolution').split('x')[1])
|
s['height'] = int(s.pop('resolution').split('x')[1])
|
||||||
|
|
||||||
|
s['zoom'] = '%.2f,%.2f,%.2f,%.2f' % (
|
||||||
|
s.pop('zoomx') / 100.0, s.pop('zoomy') / 100.0,
|
||||||
|
s.pop('zoomw') / 100.0, s.pop('zoomh') / 100.0)
|
||||||
|
|
||||||
s['contrast'] = s['contrast'] * 2 - 100
|
s['contrast'] = s['contrast'] * 2 - 100
|
||||||
s['saturation'] = s['saturation'] * 2 - 100
|
s['saturation'] = s['saturation'] * 2 - 100
|
||||||
@ -759,6 +782,124 @@ def seQuality():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomx():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom X',
|
||||||
|
'description': 'sets the horizontal zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomy():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Y',
|
||||||
|
'description': 'sets the vertical zoom offset',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 0,
|
||||||
|
'max': 80,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomw():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Width',
|
||||||
|
'description': 'sets the zoom width',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seZoomh():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Zoom Height',
|
||||||
|
'description': 'sets the zoom height',
|
||||||
|
'type': 'range',
|
||||||
|
'min': 20,
|
||||||
|
'max': 100,
|
||||||
|
'snap': 2,
|
||||||
|
'ticksnum': 5,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '%',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def sePreview():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'HDMI Preview',
|
||||||
|
'description': 'enable this if you want to see the preview on an HDMI-connected monitor',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def streamEyeCameraSeparator3():
|
def streamEyeCameraSeparator3():
|
||||||
return {
|
return {
|
||||||
@ -794,31 +935,6 @@ def seIso():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
|
||||||
def seEv():
|
|
||||||
if not _get_streameye_enabled():
|
|
||||||
return None
|
|
||||||
|
|
||||||
return {
|
|
||||||
'label': 'EV Compensation',
|
|
||||||
'description': 'sets a desired EV compensation level for this camera',
|
|
||||||
'type': 'range',
|
|
||||||
'min': -25,
|
|
||||||
'max': 25,
|
|
||||||
'snap': 1,
|
|
||||||
'ticksnum': 11,
|
|
||||||
'decimals': 0,
|
|
||||||
'unit': '',
|
|
||||||
'section': 'device',
|
|
||||||
'advanced': True,
|
|
||||||
'camera': True,
|
|
||||||
'required': True,
|
|
||||||
'get': _get_raspimjpeg_settings,
|
|
||||||
'set': _set_raspimjpeg_settings,
|
|
||||||
'get_set_dict': True
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seShutter():
|
def seShutter():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -871,6 +987,31 @@ def seExposure():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seEv():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Exposure Compensation',
|
||||||
|
'description': 'sets a desired exposure compensation for this camera',
|
||||||
|
'type': 'range',
|
||||||
|
'min': -25,
|
||||||
|
'max': 25,
|
||||||
|
'snap': 1,
|
||||||
|
'ticksnum': 11,
|
||||||
|
'decimals': 0,
|
||||||
|
'unit': '',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seAwb():
|
def seAwb():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
@ -950,6 +1091,25 @@ def seVstab():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@additional_config
|
||||||
|
def seDenoise():
|
||||||
|
if not _get_streameye_enabled():
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
'label': 'Denoise',
|
||||||
|
'description': 'enables image denoising',
|
||||||
|
'type': 'bool',
|
||||||
|
'section': 'device',
|
||||||
|
'advanced': True,
|
||||||
|
'camera': True,
|
||||||
|
'required': True,
|
||||||
|
'get': _get_raspimjpeg_settings,
|
||||||
|
'set': _set_raspimjpeg_settings,
|
||||||
|
'get_set_dict': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@additional_config
|
@additional_config
|
||||||
def seImxfx():
|
def seImxfx():
|
||||||
if not _get_streameye_enabled():
|
if not _get_streameye_enabled():
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
STREAMEYE_VERSION = 121126d99531bc4a4ddecd9e90721eb44f065d93
|
STREAMEYE_VERSION = ffd6f28a094f70c70893f6e516610459faa15ea2
|
||||||
STREAMEYE_SITE = $(call github,ccrisan,streameye,$(STREAMEYE_VERSION))
|
STREAMEYE_SITE = $(call github,ccrisan,streameye,$(STREAMEYE_VERSION))
|
||||||
STREAMEYE_LICENSE = GPLv3
|
STREAMEYE_LICENSE = GPLv3
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user