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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python中正则表达式的详细教程
Apr 30 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
python实现大量图片重命名
Mar 23 Python
Python列表切片常用操作实例解析
Dec 16 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 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
一个程序下载的管理程序(二)
2006/10/09 PHP
使用 php4 加速 web 传输
2006/10/09 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
详解python实现线程安全的单例模式
2018/03/05 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
PHP如何自定义函数
2016/09/16 面试题
《守株待兔》教学反思
2014/03/01 职场文书
蓝颜请假条
2014/04/11 职场文书
法院信息化建设方案
2014/05/21 职场文书
服务行业口号
2014/06/11 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
财务整改报告范文
2014/11/05 职场文书
滴水洞导游词
2015/02/10 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang