mirror of
https://github.com/home-assistant/core.git
synced 2025-07-10 06:47:09 +00:00
Improve type hints in dlib_face_identify (#145423)
This commit is contained in:
parent
a7f6a6f22c
commit
3d53bdc6c5
@ -11,6 +11,7 @@ import voluptuous as vol
|
|||||||
from homeassistant.components.image_processing import (
|
from homeassistant.components.image_processing import (
|
||||||
CONF_CONFIDENCE,
|
CONF_CONFIDENCE,
|
||||||
PLATFORM_SCHEMA as IMAGE_PROCESSING_PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA as IMAGE_PROCESSING_PLATFORM_SCHEMA,
|
||||||
|
FaceInformation,
|
||||||
ImageProcessingFaceEntity,
|
ImageProcessingFaceEntity,
|
||||||
)
|
)
|
||||||
from homeassistant.const import ATTR_NAME, CONF_ENTITY_ID, CONF_NAME, CONF_SOURCE
|
from homeassistant.const import ATTR_NAME, CONF_ENTITY_ID, CONF_NAME, CONF_SOURCE
|
||||||
@ -38,31 +39,40 @@ def setup_platform(
|
|||||||
discovery_info: DiscoveryInfoType | None = None,
|
discovery_info: DiscoveryInfoType | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up the Dlib Face detection platform."""
|
"""Set up the Dlib Face detection platform."""
|
||||||
|
confidence: float = config[CONF_CONFIDENCE]
|
||||||
|
faces: dict[str, str] = config[CONF_FACES]
|
||||||
|
source: list[dict[str, str]] = config[CONF_SOURCE]
|
||||||
add_entities(
|
add_entities(
|
||||||
DlibFaceIdentifyEntity(
|
DlibFaceIdentifyEntity(
|
||||||
camera[CONF_ENTITY_ID],
|
camera[CONF_ENTITY_ID],
|
||||||
config[CONF_FACES],
|
faces,
|
||||||
camera.get(CONF_NAME),
|
camera.get(CONF_NAME),
|
||||||
config[CONF_CONFIDENCE],
|
confidence,
|
||||||
)
|
)
|
||||||
for camera in config[CONF_SOURCE]
|
for camera in source
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class DlibFaceIdentifyEntity(ImageProcessingFaceEntity):
|
class DlibFaceIdentifyEntity(ImageProcessingFaceEntity):
|
||||||
"""Dlib Face API entity for identify."""
|
"""Dlib Face API entity for identify."""
|
||||||
|
|
||||||
def __init__(self, camera_entity, faces, name, tolerance):
|
def __init__(
|
||||||
|
self,
|
||||||
|
camera_entity: str,
|
||||||
|
faces: dict[str, str],
|
||||||
|
name: str | None,
|
||||||
|
tolerance: float,
|
||||||
|
) -> None:
|
||||||
"""Initialize Dlib face identify entry."""
|
"""Initialize Dlib face identify entry."""
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self._camera = camera_entity
|
self._attr_camera_entity = camera_entity
|
||||||
|
|
||||||
if name:
|
if name:
|
||||||
self._name = name
|
self._attr_name = name
|
||||||
else:
|
else:
|
||||||
self._name = f"Dlib Face {split_entity_id(camera_entity)[1]}"
|
self._attr_name = f"Dlib Face {split_entity_id(camera_entity)[1]}"
|
||||||
|
|
||||||
self._faces = {}
|
self._faces = {}
|
||||||
for face_name, face_file in faces.items():
|
for face_name, face_file in faces.items():
|
||||||
@ -74,17 +84,7 @@ class DlibFaceIdentifyEntity(ImageProcessingFaceEntity):
|
|||||||
|
|
||||||
self._tolerance = tolerance
|
self._tolerance = tolerance
|
||||||
|
|
||||||
@property
|
def process_image(self, image: bytes) -> None:
|
||||||
def camera_entity(self):
|
|
||||||
"""Return camera entity id from process pictures."""
|
|
||||||
return self._camera
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Return the name of the entity."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
def process_image(self, image):
|
|
||||||
"""Process image."""
|
"""Process image."""
|
||||||
|
|
||||||
fak_file = io.BytesIO(image)
|
fak_file = io.BytesIO(image)
|
||||||
@ -94,7 +94,7 @@ class DlibFaceIdentifyEntity(ImageProcessingFaceEntity):
|
|||||||
image = face_recognition.load_image_file(fak_file)
|
image = face_recognition.load_image_file(fak_file)
|
||||||
unknowns = face_recognition.face_encodings(image)
|
unknowns = face_recognition.face_encodings(image)
|
||||||
|
|
||||||
found = []
|
found: list[FaceInformation] = []
|
||||||
for unknown_face in unknowns:
|
for unknown_face in unknowns:
|
||||||
for name, face in self._faces.items():
|
for name, face in self._faces.items():
|
||||||
result = face_recognition.compare_faces(
|
result = face_recognition.compare_faces(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user