python dlib人脸识别代码实例


Posted in Python onApril 04, 2019

本文实例为大家分享了python dlib人脸识别的具体代码,供大家参考,具体内容如下

import matplotlib.pyplot as plt
import dlib
import numpy as np
import glob
import re
 
#正脸检测器
detector=dlib.get_frontal_face_detector()
#脸部关键形态检测器
sp=dlib.shape_predictor(r"D:\LB\JAVASCRIPT\shape_predictor_68_face_landmarks.dat")
#人脸识别模型
facerec = dlib.face_recognition_model_v1(r"D:\LB\JAVASCRIPT\dlib_face_recognition_resnet_model_v1.dat")
 
#候选人脸部描述向量集
descriptors=[]
 
photo_locations=[]
 
for photo in glob.glob(r'D:\LB\JAVASCRIPT\faces\*.jpg'):
  photo_locations.append(photo)
  img=plt.imread(photo)
  img=np.array(img)
  
  #开始检测人脸
  dets=detector(img,1)
  
  for k,d in enumerate(dets):
    #检测每张照片中人脸的特征
    shape=sp(img,d)
    face_descriptor=facerec.compute_face_descriptor(img,shape)
    v=np.array(face_descriptor)
    descriptors.append(v)
		
#输入的待识别的人脸处理方法相同
img=plt.imread(r'D:\test_photo10.jpg')
img=np.array(img)
dets=detector(img,1)
#计算输入人脸和已有人脸之间的差异程度(比如用欧式距离来衡量)
differences=[]
for k,d in enumerate(dets):
  shape=sp(img,d)
  face_descriptor=facerec.compute_face_descriptor(img,shape)
  d_test=np.array(face_descriptor)
  
  #计算输入人脸和所有已有人脸描述向量的欧氏距离
  for i in descriptors:
    distance=np.linalg.norm(i-d_test)
    differences.append(distance)
 
#按欧式距离排序 欧式距离最小的就是匹配的人脸
candidate_count=len(photo_locations)
candidates_dict=dict(zip(photo_locations,differences))
candidates_dict_sorted=sorted(candidates_dict.items(),key=lambda x:x[1])
 
#matplotlib要正确显示中文需要设置
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
 
plt.rcParams['figure.figsize'] = (20.0, 70.0) 
 
ax=plt.subplot(candidate_count+1,4,1)
ax.set_title("输入的人脸")
ax.imshow(img)
 
for i,(photo,distance) in enumerate(candidates_dict_sorted):
  img=plt.imread(photo)
  
  face_name=""
  photo_name=re.search(r'([^\\]*)\.jpg$',photo)
  if photo_name:
    face_name=photo_name[1]
    
  ax=plt.subplot(candidate_count+1,4,i+2)
  ax.set_xticks([])
  ax.set_yticks([])
  ax.spines['top'].set_visible(False)
  ax.spines['right'].set_visible(False)
  ax.spines['bottom'].set_visible(False)
  ax.spines['left'].set_visible(False)
  
  if i==0:
    ax.set_title("最匹配的人脸\n\n"+face_name+"\n\n差异度:"+str(distance))
  else:
    ax.set_title(face_name+"\n\n差异度:"+str(distance))
  ax.imshow(img)
 
plt.show()

python dlib人脸识别代码实例

以上所述是小编给大家介绍的python dlib人脸识别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python使用socket连接远程服务器的方法
Apr 29 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python print 按逗号或空格分隔的方法
May 02 Python
学生信息管理系统python版
Oct 17 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python @property使用方法解析
Sep 17 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
python图像处理入门(一)
Apr 04 #Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 #Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 #Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 #Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 #Python
详解python项目实战:模拟登陆CSDN
Apr 04 #Python
Python实现字符串匹配的KMP算法
Apr 04 #Python
You might like
我的论坛源代码(十)
2006/10/09 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
基python实现多线程网页爬虫
2015/09/06 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
详解python编译器和解释器的区别
2019/06/24 Python
Python的形参和实参使用方式
2019/12/24 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
python集合能干吗
2020/07/19 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
承诺函格式模板
2015/01/21 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang