本文实例为大家分享了python dlib人脸识别的具体代码,供大家参考,具体内容如下
进口matplotlib。pyplot作为plt 进口dlib 进口numpy np 进口一滴 进口再保险 #正脸检测器 探测器=dlib.get_frontal_face_detector () #脸部关键形态检测器 sp=dlib.shape_predictor (r D: \磅\ JAVASCRIPT \ shape_predictor_68_face_landmarks.dat”) #人脸识别模型 facerec=dlib.face_recognition_model_v1 (r D: \磅\ JAVASCRIPT \ dlib_face_recognition_resnet_model_v1.dat”) #候选人脸部描述向量集 描述符=[] photo_locations=[] 照片在glob.glob (r会:\磅\ JAVASCRIPT \面临\ * . jpg”): photo_locations.append(图) img=plt.imread(图) img=np.array (img) #开始检测人的脸 依据=检测器(img, 1) k d在列举(依据): #检测每张照片中人脸的特征 形状=sp (img d) face_descriptor=facerec.compute_face_descriptor (img、形状) v=np.array (face_descriptor) descriptors.append (v) #输入的待识别的人脸处理方法相同 img=plt.imread (r想:\ test_photo10.jpg”) img=np.array (img) 依据=检测器(img, 1) #计算输入人脸和已有人脸之间的差异程度(比如用欧式距离来衡量) 差异=[] k d在列举(依据): 形状=sp (img d) face_descriptor=facerec.compute_face_descriptor (img、形状) d_test=np.array (face_descriptor) #计算输入人脸和所有已有人脸描述向量的欧氏距离 因为我在描述符: 距离=np.linalg.norm (i-d_test) differences.append(距离) #按欧式距离排序欧式距离最小的就是匹配的人的脸 candidate_count=len (photo_locations) candidates_dict=dict (zip (photo_locations差异)) candidates_dict_sorted=排序(candidates_dict.items(),关键=λx: x [1]) # matplotlib要正确显示中文需要设置 plt.rcParams['字体。家庭')=(无衬线的) plt.rcParams['字体。无衬线']=[' SimHei ') plt.rcParams['图。figsize ']=(20.0, 70.0) ax=plt.subplot (candidate_count + 1 4 1) ax.set_title(“输入的人脸”) ax.imshow (img) 对于我,(照片、距离)列举(candidates_dict_sorted): img=plt.imread(图) face_name=" " photo_name=re.search (r”([^ \ \] *) \ . jpg”美元,图) 如果photo_name: face_name=photo_name [1] ax=plt.subplot (candidate_count + 1 4 + 2) ax.set_xticks ([]) ax.set_yticks ([]) ax.spines['高级'].set_visible(假) ax.spines['正确'].set_visible(假) ax.spines(“底部”).set_visible(假) ax.spines['左'].set_visible(假) 如果我==0: ax.set_title(“最匹配的人脸\ n \ n”+ face_name +“\ n \ n差异度:“+ str(距离)) 其他: ax.set_title (face_name +“\ n \ n差异度:“+ str(距离)) ax.imshow (img) plt.show () >之前
以上所述是小编给大家介绍的python dlib人脸识别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
python dlib人脸识别代码实例