环境:python3.6   win10

安装opencv,numpy,dlib

下载人脸关键点检测器 face_landmarks.dat

下载人脸识别、提取特征值 dlib_face_recognition.dat

直接上源码

import os, dlib, glob, numpy
from skimage import io
import cv2
import json
# 人脸关键点检测器
predictor_path = '../resource/dat/shape_predictor_68_face_landmarks.dat'
# 人脸识别、提取特征值
face_rec_model_path = '../resource/dat/dlib_face_recognition.dat'
# 人脸模板库地址
faces_floder_path = '../resource/img/'# 加载模型
detector = dlib.get_frontal_face_detector()
sp = dlib.shape_predictor(predictor_path)
facerer = dlib.face_recognition_model_v1(face_rec_model_path)
candidate = []
descriptors = []
desc_arr = []
desc_val = []
desc_name = []
# 以下方法会在第一次提取了人脸模板库的数据后保存到指定文件中,后面不需要重复计算提取
with open('../resource/file/222.json', 'r') as fp:json_data = json.load(fp)print(json_data)for i in json_data:desc_val.append(i['val'])desc_name.append(i['name'])
if desc_name:descriptors = desc_valcandidate = desc_name
else:for f in glob.glob(os.path.join(faces_floder_path, '*.*')):print('正在处理:{}'.format(f))img = io.imread(f)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)dets = detector(gray, 1)for k, d in enumerate(dets):shape = sp(img, d)face_descriptor = facerer.compute_face_descriptor(img, shape)v = numpy.array(face_descriptor)# 特征值descriptors.append(v)# 图片名称candidate.append(f.split('\\')[-1].split('.')[0])desc_name_val = {'name': f.split('\\')[-1].split('.')[0], 'val': v.tolist()}desc_arr.append(desc_name_val)#    print(candidate)print(desc_arr)json_str = json.dumps(desc_arr)with open('../resource/file/222.json', 'w') as json_file:json_file.write(json_str)print('识别训练完成')
# 开启摄像头,定义窗口名称
capture = cv2.VideoCapture(0)
cv2.namedWindow('face')
while True:ret, frame = capture.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)faces = detector(gray, 1)dist = []print('发现{0}个人脸'.format(len(faces)))if faces:for (idx, face) in enumerate(faces):shape = sp(frame, face)face_descriptor = facerer.compute_face_descriptor(frame, shape)d_test = numpy.array(face_descriptor)for i in descriptors:  # 计算距离dist_ = numpy.linalg.norm(i - d_test)dist.append(dist_)c_d = dict(zip(candidate, dist))cd_sorted = sorted(c_d.items(), key=lambda d: d[1])pos = (face.left(), face.top()-20)cv2.putText(frame, cd_sorted[0][0], pos, cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0))cv2.rectangle(frame, (face.left(), face.top()), (face.right(), face.bottom()), (0, 255, 0), 2)print("识别到的人物最有可能是: ", cd_sorted[0][0])cv2.imshow('face', frame)if cv2.waitKey(5) & 0xFF == ord('q'):break
# 释放资源
capture.release()
cv2.destroyAllWindows()

效果图

基于DLIB的视频人脸识别对比相关推荐

  1. 调用笔记本的摄像头实现基于opencv的视频人脸识别(中文显示和英文显示)以及 index 480 is out of bounds for axis 0 with size 480错误的解决

    @人脸识别代码和一些常见错误 基于opencv的视频人脸识别(中文显示)以及 index 480 is out of bounds for axis 0 with size 480错误的解决 参考了 ...

  2. 基于openCV的视频人脸识别——演员的诞生视频人脸识别

    1.准备训练数据 网络上下载(训练数据量大时,通过爬虫获取)目标的图片: 运用以下代码将原图中的人脸头像识别.提取.调整大小(这里是150*200),并分别保存. 运行环境:win7 64+VS201 ...

  3. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  4. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)

    基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...

  5. 【人脸识别】基于dlib库实现人脸特征值提取

    一.Dlib库介绍与安装 1. Dlib库简介 Dlib库是一个机器学习的开源库,包含了机器学习的很多算法,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码).Dlib可以 ...

  6. 虹软 ArcFace 与 Dlib 人脸识别对比

    我司最近要做和人脸识别相关的产品,原来使用的是某在线人脸识别平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法 ...

  7. 基于Dlib库的人脸表情分析与识别——Python

    本项目主要由包含我在内的四名成员共同完成:孙明喆.吴震.张晨.张明 项目介绍,及可执行文件.模型文件.详细报告均在GitHub中可以查看: GitHub 关于项目的详细介绍,可能过些日子在复习时候会有 ...

  8. python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  9. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

最新文章

  1. 代码中的各种时间格式
  2. Delphi的四舍五入函数
  3. 编码调试:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 12: illegal multibyte sequen
  4. HDU 5612 Baby Ming and Matrix games
  5. 温故知新-[CPP]-Eclipse-CPP中一个Project多个Main
  6. 多线程——实现Runnable接口实现一个多线程
  7. java 线程管理框架_实现 Java 多线程并发控制框架
  8. 矩形法_教程 | 三个案例教会你大师都爱用的矩形造字法!
  9. autohotkey循环
  10. 一文讲清楚ojdbc、Oracle和JDK之间的兼容性关系
  11. 5G及移动边缘计算(MEC)学习笔记(1)
  12. multisim14
  13. mybatis一个怪异的问题: Invalid bound statement not found 作者及来源: babyblue - 博客园 收藏到→_→: 摘要: mybatis一个怪异
  14. win10推送_Win10新版19631推送,网友:千万别翻车
  15. 数学建模系列-预测模型(一)灰色预测模型
  16. sqlite主键与唯一约束
  17. Acala TC4 糖果节历程总结
  18. sql镜像备份 转 浪客 博客
  19. 维沃丫3手机微信无法连接服务器1.104,手机微信网络连接不可用?教你4个方法,轻松解决网络问题!...
  20. 英雄联盟手游显示服务器尚未开启什么意思,英雄联盟手游could not connect to the server是什么意思-could not解决办法[图文]-游戏窝...

热门文章

  1. Freemarker简单概述及其数据类型的简单学习—快速入门(一)
  2. 初等行变换与初等列变换
  3. win10开机出现的问题及解决
  4. Customizable constraint systems for succinct arguments学习笔记(2)
  5. android 通讯录 首字母索引,android仿微信通讯录搜索(匹配拼音,字母,索引位置标记颜色)...
  6. 人脸识别的三类安全风险及四类防护思路
  7. 【系统设计】分布式系统架构设计
  8. 尼古拉·特斯拉(膜拜伟人)转自百度百科
  9. VSLAM视觉里程计总结
  10. 这几款 IDEA 主题也太好看了吧!!