Skip to content

Commit 1bec964

Browse files
feat($opencv): persistence detected face info
1 parent 0a00573 commit 1bec964

8 files changed

Lines changed: 52 additions & 40 deletions

File tree

home_guardian/__main__.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import random
2-
31
from home_guardian.configuration.thread_pool_configuration import simulate_multi_thread
4-
from home_guardian.repository.user_repository import create_user
52

63
if __name__ == "__main__":
7-
create_user(f"user{random.random()}")
84
simulate_multi_thread()

home_guardian/message/email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def build_message(receiver: str) -> MIMEMultipart:
3636
return message
3737

3838

39-
def send_email():
39+
def send_email() -> None:
4040
smtp: smtplib.SMTP = smtplib.SMTP(mail_host, 25)
4141
smtp.connect(mail_host, 25)
4242
smtp.login(sender, mail_password)

home_guardian/opencv/face_detection.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from home_guardian.common.debounce_throttle import throttle
99
from home_guardian.configuration.thread_pool_configuration import executor
1010
from home_guardian.function_collection import get_data_dir, get_resources_dir
11+
from home_guardian.repository.detected_face_repository import save
1112

1213
detected_face_dir = f"{get_data_dir()}/detection"
1314
os.makedirs(detected_face_dir, exist_ok=True)
@@ -37,10 +38,20 @@ def detect_and_take_photo() -> None:
3738

3839
@throttle(2)
3940
def save_capture(frame) -> None:
41+
logger.debug(f"type of frame: {type(frame)}")
4042
executor.submit(async_save_capture, frame)
4143

4244

45+
@logger.catch
4346
def async_save_capture(frame) -> None:
44-
file_name = f"{get_data_dir()}/detection/detected_face_{datetime.datetime.now().__str__().replace(':', '_')}.jpeg"
45-
cv2.imwrite(file_name, frame)
46-
logger.info("Saved image to: {}", file_name)
47+
picture_path = (
48+
f"{get_data_dir()}/detection"
49+
f"/detected_face_{datetime.datetime.now().__str__().replace(':', '_')}.jpeg"
50+
)
51+
cv2.imwrite(picture_path, frame)
52+
detected_face = save(picture_path)
53+
logger.info(
54+
"Saved picture, picture_path: {}, detected_face: {}",
55+
picture_path,
56+
detected_face,
57+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from loguru import logger
2+
3+
from home_guardian.repository.model.detected_face import DetectedFace
4+
5+
6+
@logger.catch
7+
def save(picture_path: str, detected_username: str = None) -> DetectedFace:
8+
"""
9+
Save a new detected face.
10+
:param picture_path: the picture path
11+
:param detected_username: the detected username
12+
:return: a DetectedFace object
13+
"""
14+
detected_face: DetectedFace = DetectedFace(
15+
picture_path=picture_path, detected_username=detected_username
16+
)
17+
detected_face.save()
18+
return detected_face

home_guardian/repository/model/base/model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ class BaseModel(Model):
1818

1919
class Meta:
2020
database = db
21+
legacy_table_names = False
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from datetime import datetime
2+
3+
from peewee import CharField, DateTimeField
4+
5+
from home_guardian.repository.model.base.model import BaseModel, db
6+
7+
8+
class DetectedFace(BaseModel):
9+
"""
10+
DetectedFace model
11+
"""
12+
13+
picture_path = CharField(max_length=500)
14+
detected_username = CharField(max_length=50, null=True)
15+
created_time = DateTimeField(default=datetime.now)
16+
17+
18+
db.create_tables([DetectedFace])

home_guardian/repository/model/user.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

home_guardian/repository/user_repository.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)