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 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Python线程同步的实现代码
Oct 03 Python
Python高级特性与几种函数的讲解
Mar 08 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python for循环与getitem的关系详解
Jan 02 Python
Python super()方法原理详解
Mar 31 Python
想学画画?python满足你!
Dec 24 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python分支结构(switch)操作简介
2018/01/17 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
python画图的函数用法以及技巧
2019/06/28 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
经理助理岗位职责
2014/03/05 职场文书
伊索寓言教学反思
2014/05/01 职场文书
党员承诺书格式
2014/05/21 职场文书
师德师风个人整改措施
2014/10/27 职场文书
个人售房合同协议书
2016/03/21 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python