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中return和print的一些理解
Aug 18 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
详解python深浅拷贝区别
Jun 24 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
Django与pyecharts结合的实例代码
May 13 Python
python代码中怎么换行
Jun 17 Python
Django serializer优化类视图的实现示例
Jul 16 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
python 5个顶级异步框架推荐
Sep 09 Python
Python基于内置函数type创建新类型
Oct 22 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
php5.3 注意事项说明
2013/07/01 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
jQuery的一些注意
2006/12/06 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
快速入门python学习笔记
2017/12/06 Python
django celery redis使用具体实践
2019/04/08 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
.NET方向面试题
2014/11/20 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
车间安全生产标语
2014/06/06 职场文书
语文教研活动总结
2014/07/02 职场文书
单位员工收入证明样本
2014/10/09 职场文书
文明家庭事迹材料
2014/12/20 职场文书
python for循环赋值问题
2021/06/03 Python