From 0c2589c151f63effcb356737a1a19e4f71585aa5 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 16 Sep 2023 23:27:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3face=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/services.py | 16 ++++++++-------- apps/hrm/tasks.py | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/hrm/services.py b/apps/hrm/services.py index 8c87925e..0f9edb34 100755 --- a/apps/hrm/services.py +++ b/apps/hrm/services.py @@ -15,7 +15,6 @@ from apps.third.dahua import dhClient from apps.third.models import TDevice from apps.third.tapis import dhapis from apps.utils.tools import rannum, ranstr -from apps.utils.face import face_find myLogger = logging.getLogger('log') @@ -392,22 +391,23 @@ class HrmService: return None, '识别失败,请调整位置' # 匹配人脸库 - face_datas = cache.get('face_datas', None) + face_datas = cache.get('face_datas_dlib', None) # 使用的是face_datas_dlib作为key的 if face_datas is None: from apps.hrm.tasks import update_all_facedata_cache update_all_facedata_cache() - face_datas = cache.get('face_datas') + face_datas = cache.get('face_datas_dlib') results = face_recognition.compare_faces(face_datas['datas'], unknown_face_encoding, tolerance=0.45) - for index, value in enumerate(results): - if value: - # 识别成功 - ep = Employee.objects.get(id=face_datas['eps'][index]) - return ep, '' + if True in results: + first_match_index = results.index(True) + # 识别成功 + ep = Employee.objects.get(id=face_datas['eps'][first_match_index]) + return ep, '' return None, '人脸未匹配,请调整位置' @classmethod def face_find_from_base64(cls, base64_data): + from apps.utils.face import face_find # from deepface import DeepFace img_name = str(uuid.uuid4()) img_path = settings.BASE_DIR +'/temp/face_' + img_name +'.jpg' diff --git a/apps/hrm/tasks.py b/apps/hrm/tasks.py index debb0ab1..2f1bcfc9 100755 --- a/apps/hrm/tasks.py +++ b/apps/hrm/tasks.py @@ -97,14 +97,14 @@ def update_all_facedata_cache(): """ 更新人脸数据缓存 """ - facedata_queyset = Employee.objects.filter(face_data__dlib__isnull=False).values('id', 'face_data') + facedata_queyset = Employee.objects.filter(face_data__dlib__isnull=False).values('id', 'face_data__dlib') face_eps = [] face_datas = [] for i in facedata_queyset: face_eps.append(i['id']) - face_datas.append(i['face_data']) + face_datas.append(i['face_data__dlib']) face_data_dict = {"eps": face_eps, "datas": face_datas} - cache.set('face_datas', face_data_dict) + cache.set('face_datas_dlib', face_data_dict) @shared_task(base=CustomTask)