diff --git a/lib/face_bioassay_lib/cores/face_fuction.py b/lib/face_bioassay_lib/cores/face_fuction.py index d6a497edb571f7aaf677336a3d4bcad5c323e836..28307a6017368e62ad6ffa187e7fd89c74d26fc2 100644 --- a/lib/face_bioassay_lib/cores/face_fuction.py +++ b/lib/face_bioassay_lib/cores/face_fuction.py @@ -306,8 +306,8 @@ def get_faces_batch_attribute(face_multitask_model,face_euler_model,face_au_mode yaw,pitch,roll = euler_angles[i] # 欧拉角 if vis: - cv2.putText(img_raw, "yaw:{:.1f},pitch:{:.1f},roll:{:.1f}".format(yaw,pitch,roll),(int(r_bboxes[i][0]-20),int(r_bboxes[i][1]-30)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (253,139,54), 5) - cv2.putText(img_raw, "yaw:{:.1f},pitch:{:.1f},roll:{:.1f}".format(yaw,pitch,roll),(int(r_bboxes[i][0]-20),int(r_bboxes[i][1]-30)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + cv2.putText(img_raw, "yaw:{:.1f},pitch:{:.1f},roll:{:.1f}".format(yaw,pitch,roll),(int(r_bboxes[i][0]-1),int(r_bboxes[i][1]+36)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (253,139,54), 5) + cv2.putText(img_raw, "yaw:{:.1f},pitch:{:.1f},roll:{:.1f}".format(yaw,pitch,roll),(int(r_bboxes[i][0]-1),int(r_bboxes[i][1]+36)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) cv2.putText(img_raw, "{}".format(int(face_area)),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]-3)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (253,39,54), 5) # face_area cv2.putText(img_raw, "{}".format(int(face_area)),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]-3)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) @@ -352,7 +352,6 @@ def get_faces_batch_attribute(face_multitask_model,face_euler_model,face_au_mode # print("faces_align_batch shape : ",faces_align_batch.shape) au_features = face_au_model.predict(faces_align_batch) - for i in range(len(dets)): # print("au_features : ",au_features[i]) open_mouth = np.clip(au_features[i][8],0.,1.) @@ -361,10 +360,30 @@ def get_faces_batch_attribute(face_multitask_model,face_euler_model,face_au_mode print("open_mouth : {:.2f},eye_close: {:.3f} , {:.3f}".format(open_mouth,close_eye_r,close_eye_l)) faces_message[i]["open_mouth"] = open_mouth faces_message[i]["eye_close"] = (close_eye_r,close_eye_l) - cv2.putText(img_raw, "{:.2f}".format(open_mouth),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,25), 3) - cv2.putText(img_raw, "{:.2f}".format(open_mouth),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) - - cv2.putText(img_raw, "{:.2f},{:.2f}".format(close_eye_r,close_eye_l),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+35)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,33,255), 3) - cv2.putText(img_raw, "{:.2f},{:.2f}".format(close_eye_r,close_eye_l),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+35)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + # 根据阈值 判断 其 开闭状态 + r_eye_str = "close" if close_eye_r>0.35 else "open" + l_eye_str = "close" if close_eye_l>0.35 else "open" + open_mouth_str = "open" if open_mouth>0.26 else "close" + # 开闭状态 可视化 + if open_mouth_str == "open": + cv2.putText(img_raw, "{:.2f}:{}".format(open_mouth,open_mouth_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (225,15,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(open_mouth,open_mouth_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + else: + cv2.putText(img_raw, "{:.2f}:{}".format(open_mouth,open_mouth_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(open_mouth,open_mouth_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+15)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + + + if r_eye_str == "open": + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_r,r_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+45)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_r,r_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+45)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + else: + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_r,r_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+45)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (225,15,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_r,r_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+45)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + if l_eye_str == "open": + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_l,l_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+70)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_l,l_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+70)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) + else: + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_l,l_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+60)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (225,15,25), 3) + cv2.putText(img_raw, "{:.2f}:{}".format(close_eye_l,l_eye_str),(int(r_bboxes[i][0]-1),int(r_bboxes[i][3]+60)),cv2.FONT_HERSHEY_DUPLEX, 0.65, (20,185,255), 1) return faces_message diff --git a/main.py b/main.py index 5521d213e9233188d712fb6a566a3fdeced732ba..0a82c70befcd0ce04a654cbd0b66f670e89254cc 100644 --- a/main.py +++ b/main.py @@ -67,8 +67,8 @@ if __name__ == '__main__': elif APP_P == "face_bioassay": from applications.face_bioassay_local_app import main_face_bioassay #face_bioassay 应用 cfg_file = "./lib/face_bioassay_lib/cfg/face_bioassay.cfg" - video_path = "./video/f1.mp4" - main_face_bioassay(video_path = 0,cfg_file = cfg_file)#加载 face_bioassay 应用 + video_path = "./video/face2.mp4" + main_face_bioassay(video_path = video_path,cfg_file = cfg_file)#加载 face_bioassay 应用 # elif APP_P == "video_ana": # from applications.VideoAnalysis_app import main_VideoAnalysis #加载 video_analysis 应用