core/homeassistant/components/demo/image_processing.py

102 lines
2.7 KiB
Python

"""Support for the demo image processing."""
from homeassistant.components.image_processing import (
ImageProcessingFaceEntity, ATTR_CONFIDENCE, ATTR_NAME, ATTR_AGE,
ATTR_GENDER
)
from homeassistant.components.openalpr_local.image_processing import (
ImageProcessingAlprEntity)
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the demo image processing platform."""
add_entities([
DemoImageProcessingAlpr('camera.demo_camera', "Demo Alpr"),
DemoImageProcessingFace(
'camera.demo_camera', "Demo Face")
])
class DemoImageProcessingAlpr(ImageProcessingAlprEntity):
"""Demo ALPR image processing entity."""
def __init__(self, camera_entity, name):
"""Initialize demo ALPR image processing entity."""
super().__init__()
self._name = name
self._camera = camera_entity
@property
def camera_entity(self):
"""Return camera entity id from process pictures."""
return self._camera
@property
def confidence(self):
"""Return minimum confidence for send events."""
return 80
@property
def name(self):
"""Return the name of the entity."""
return self._name
def process_image(self, image):
"""Process image."""
demo_data = {
'AC3829': 98.3,
'BE392034': 95.5,
'CD02394': 93.4,
'DF923043': 90.8
}
self.process_plates(demo_data, 1)
class DemoImageProcessingFace(ImageProcessingFaceEntity):
"""Demo face identify image processing entity."""
def __init__(self, camera_entity, name):
"""Initialize demo face image processing entity."""
super().__init__()
self._name = name
self._camera = camera_entity
@property
def camera_entity(self):
"""Return camera entity id from process pictures."""
return self._camera
@property
def confidence(self):
"""Return minimum confidence for send events."""
return 80
@property
def name(self):
"""Return the name of the entity."""
return self._name
def process_image(self, image):
"""Process image."""
demo_data = [
{
ATTR_CONFIDENCE: 98.34,
ATTR_NAME: 'Hans',
ATTR_AGE: 16.0,
ATTR_GENDER: 'male',
},
{
ATTR_NAME: 'Helena',
ATTR_AGE: 28.0,
ATTR_GENDER: 'female',
},
{
ATTR_CONFIDENCE: 62.53,
ATTR_NAME: 'Luna',
},
]
self.process_faces(demo_data, 4)