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客户端和服务端简单示例
Feb 24 Python
Python检测字符串中是否包含某字符集合中的字符
May 21 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
浅析python内置模块collections
Nov 15 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
numpy:找到指定元素的索引示例
Nov 26 Python
基于Python快速处理PDF表格数据
Jun 03 Python
python中return不返回值的问题解析
Jul 22 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
如何在C++中调用Python
May 21 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
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
Python3.x对JSON的一些操作示例
2017/09/01 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
浅析python中while循环和for循环
2019/11/19 Python
python迭代器常见用法实例分析
2019/11/22 Python
python在不同条件下的输入与输出
2020/02/13 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
高分子材料个人求职信范文
2013/09/25 职场文书
安全生产实施方案
2014/02/23 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
暑期社会实践证明书
2014/11/17 职场文书
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python