Multiple API⚓
Class Cameras
⚓
A class for manage multiple threaded cameras.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
devices |
dict |
a dict with names and sources of the camera devices. |
{} |
reconnectDelay |
wait time for try reopen camera device |
required | |
fps |
frames per second |
required | |
verbose |
display info messages? |
required | |
size |
tuple or list with a dimension of the image |
required | |
emitterIsEnabled |
disable on/emit events (callbacks execution) |
required | |
backgroundIsEnabled |
if some error is produced with the camera it will display a black frame with a message. |
required |
Examples:
cameras = Cameras(devices={'camera1': {'src': 0}, 'cameras2': {'src': 1}})
Source code in remio/camio.py
class Cameras:
"""A class for manage multiple threaded cameras.
Args:
devices: a dict with names and sources of the camera devices.
reconnectDelay: wait time for try reopen camera device
fps: frames per second
verbose: display info messages?
size: tuple or list with a dimension of the image
emitterIsEnabled: disable on/emit events (callbacks execution)
backgroundIsEnabled: if some error is produced with the camera it will display
a black frame with a message.
Example:
cameras = Cameras(devices={'camera1': {'src': 0}, 'cameras2': {'src': 1}})
"""
def __init__(self, devices: dict = {}, *args, **kwargs):
self.devices = {}
if len(devices) > 0:
for name, settings in devices.items():
if isinstance(settings, dict):
self.devices[name] = Camera(name=name, **settings)
def __getitem__(self, name):
return self.devices[name]
def __len__(self):
return len(self.devices)
def startAll(self):
"""Starts all camera devices on the devices dict."""
for device in self.devices.values():
device.start()
def startOnly(self, deviceName: str = "default"):
"""Starts only a specific device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
device = self.devices[deviceName]
device.start()
def stopAll(self):
"""Stops all camera devices."""
for device in self.devices.values():
device.stop()
def stopOnly(self, deviceName: str = "default"):
"""Stops an specific camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
device = self.devices[deviceName]
device.stop()
def getDevice(self, deviceName: str = "default"):
"""Returns a specific camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
return self.devices[deviceName]
def pauseOnly(self, deviceName: str = "default"):
"""Pauses a specific camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
device = self.devices[deviceName]
device.pause()
def pauseAll(self):
"""Pauses all camera devices."""
for device in self.devices.values():
device.pause()
def resumeAll(self):
"""Resumes all camera devices."""
for device in self.devices.values():
device.resume()
def resumeOnly(self, deviceName: str = "default"):
"""Resumes a specific camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
device = self.devices[deviceName]
device.resume()
def setSpeedOnly(self, deviceName: str = "default", fps: int = 10):
"""Updates the FPS captured by a specific devices.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
self.devices[deviceName].setSpeed(fps)
def clearAllFrames(self):
"""Clears All frames."""
for device in self.devices.values():
device.clearFrame()
def getAllFrames(self, asDict: bool = True):
"""Returns a list with all cameras current frames.
Args:
asDict: return frames as dict or as list?
"""
if asDict:
frames = {
device.getName(): device.getFrame() for device in self.devices.values()
}
else:
frames = [device.getFrame() for device in self.devices.values()]
return frames
def getAllFrames64(self, asDict: bool = True):
"""Returns a list with all cameras current frames on base64 format.
Args:
asDict: return frames as dict or as list?
"""
if asDict:
frames = {
device.getName(): device.getFrame64()
for device in self.devices.values()
}
else:
frames = [device.getFrame() for device in self.devices.values()]
return frames
def getFrameOf(self, deviceName: str = "default"):
"""Returns a specific frame of a camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
return self.devices[deviceName].getFrame()
def getFrame64Of(self, deviceName: str = "default"):
"""Returns a specific frame on base 64 of a camera device.
Args:
deviceName: camera device name.
"""
if deviceName in self.devices:
return self.devices[deviceName].getFrame64()
def read(self, timeout: Union[int, float] = 0, asDict: bool = True):
"""Returns a list or a dict of frames/backgrounds.
Args:
timeout: max wait time in seconds.
asDict: return as a dict?
"""
if len(self.devices) < 2:
return list(self.devices.values())[0].read(timeout=timeout)
if asDict:
return {
device.getName(): device.read(timeout=timeout)
for device in self.devices.values()
}
else:
return [device.read(timeout=timeout) for device in self.devices.values()]
def on(self, *args, **kwargs):
for device in self.devices.values():
device.on(*args, **kwargs)
clearAllFrames(self)
⚓
getAllFrames(self, asDict=True)
⚓
Returns a list with all cameras current frames.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
asDict |
bool |
return frames as dict or as list? |
True |
Source code in remio/camio.py
def getAllFrames(self, asDict: bool = True):
"""Returns a list with all cameras current frames.
Args:
asDict: return frames as dict or as list?
"""
if asDict:
frames = {
device.getName(): device.getFrame() for device in self.devices.values()
}
else:
frames = [device.getFrame() for device in self.devices.values()]
return frames
getAllFrames64(self, asDict=True)
⚓
Returns a list with all cameras current frames on base64 format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
asDict |
bool |
return frames as dict or as list? |
True |
Source code in remio/camio.py
def getAllFrames64(self, asDict: bool = True):
"""Returns a list with all cameras current frames on base64 format.
Args:
asDict: return frames as dict or as list?
"""
if asDict:
frames = {
device.getName(): device.getFrame64()
for device in self.devices.values()
}
else:
frames = [device.getFrame() for device in self.devices.values()]
return frames
getDevice(self, deviceName='default')
⚓
Returns a specific camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
getFrame64Of(self, deviceName='default')
⚓
Returns a specific frame on base 64 of a camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
getFrameOf(self, deviceName='default')
⚓
Returns a specific frame of a camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
pauseAll(self)
⚓
pauseOnly(self, deviceName='default')
⚓
Pauses a specific camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
read(self, timeout=0, asDict=True)
⚓
Returns a list or a dict of frames/backgrounds.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
timeout |
Union[int, float] |
max wait time in seconds. |
0 |
asDict |
bool |
return as a dict? |
True |
Source code in remio/camio.py
def read(self, timeout: Union[int, float] = 0, asDict: bool = True):
"""Returns a list or a dict of frames/backgrounds.
Args:
timeout: max wait time in seconds.
asDict: return as a dict?
"""
if len(self.devices) < 2:
return list(self.devices.values())[0].read(timeout=timeout)
if asDict:
return {
device.getName(): device.read(timeout=timeout)
for device in self.devices.values()
}
else:
return [device.read(timeout=timeout) for device in self.devices.values()]
resumeAll(self)
⚓
resumeOnly(self, deviceName='default')
⚓
Resumes a specific camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
setSpeedOnly(self, deviceName='default', fps=10)
⚓
Updates the FPS captured by a specific devices.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
startAll(self)
⚓
startOnly(self, deviceName='default')
⚓
Starts only a specific device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |
stopAll(self)
⚓
stopOnly(self, deviceName='default')
⚓
Stops an specific camera device.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
deviceName |
str |
camera device name. |
'default' |