Skip to content

Commit db6cc67

Browse files
authored
Merge pull request #39 from zroger49/master
Add a method to get a list of registered faces
2 parents c5b51ee + bea6bf6 commit db6cc67

File tree

2 files changed

+167
-116
lines changed

2 files changed

+167
-116
lines changed

deepstack/core.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from PIL import Image
66
from typing import Union, List, Set, Dict
77

8+
from requests.models import Response
9+
810
## Const
911
DEFAULT_API_KEY = ""
1012
DEFAULT_TIMEOUT = 10 # seconds
@@ -23,6 +25,7 @@
2325
URL_FACE_DETECTION = "/face"
2426
URL_FACE_REGISTER = "/face/register"
2527
URL_FACE_RECOGNIZE = "/face/recognize"
28+
URL_FACE_LIST = "/face/list"
2629
URL_SCENE_RECOGNIZE = "/scene"
2730

2831

@@ -132,6 +135,21 @@ def process_image(
132135
)
133136

134137

138+
def get_stored_faces(url, api_key, timeout) -> List:
139+
"""Posts a request and get the stored faces as a list"""
140+
try:
141+
data = requests.post(url, timeout=timeout, data={"api_key": api_key})
142+
except requests.exceptions.Timeout:
143+
raise DeepstackException(
144+
f"Timeout connecting to Deepstack, the current timeout is {timeout} seconds, try increasing this value"
145+
)
146+
except requests.exceptions.ConnectionError or requests.exceptions.MissingSchema as exc:
147+
raise DeepstackException(
148+
f"Deepstack connection error, check your IP and port: {exc}"
149+
)
150+
return data.json()
151+
152+
135153
class DeepstackVision:
136154
"""Base class for Deepstack vision."""
137155

@@ -145,6 +163,7 @@ def __init__(
145163
url_detect: str = "",
146164
url_recognize: str = "",
147165
url_register: str = "",
166+
url_face_list: str = "",
148167
):
149168
self._api_key = api_key
150169
self._timeout = timeout
@@ -153,6 +172,7 @@ def __init__(
153172
self._url_detect = self._url_base + url_detect
154173
self._url_recognize = self._url_base + url_recognize
155174
self._url_register = self._url_base + url_register
175+
self._url_face_list = self._url_base + url_face_list
156176

157177
def detect(self):
158178
"""Process image_bytes and detect."""
@@ -257,6 +277,7 @@ def __init__(
257277
url_detect=URL_FACE_DETECTION,
258278
url_register=URL_FACE_REGISTER,
259279
url_recognize=URL_FACE_RECOGNIZE,
280+
url_face_list=URL_FACE_LIST,
260281
)
261282

262283
def detect(self, image_bytes: bytes):
@@ -303,3 +324,10 @@ def recognize(self, image_bytes: bytes):
303324
)
304325

305326
return response["predictions"]
327+
328+
def get_registered_faces(self):
329+
"""Get the name of the registered faces"""
330+
response = get_stored_faces(
331+
url=self._url_face_list, api_key=self._api_key, timeout=self._timeout
332+
)
333+
return response["faces"]

usage-face-recognition.ipynb

Lines changed: 139 additions & 116 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)