没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,提取人脸特征,通过计算欧氏距离来和预存的人脸特征进行对比,达到人脸识别的目的; 可以自动从摄像头中抠取人脸图片存储到本地,然后提取构建预设人脸特征; 根据抠取的 / 已有的同一个人多张人脸图片提取128D特征值,然后计算该人的128D特征均值; 然后和摄像头中实时获取到的人脸提取出的特征值,计算欧氏距离,判定是否为同一张人脸; 人脸识别 / face recognition的说明: wikipedia 关于人脸识别系统 / face recognition system 的描述:theywork by comparing s
资源推荐
资源详情
资源评论
Python3利用利用Dlib19.7实现摄像头人脸识别的方法实现摄像头人脸识别的方法
0.引言引言
利用python开发,借助Dlib库捕获摄像头中的人脸,提取人脸特征,通过计算欧氏距离来和预存的人脸特征进行对比,达到人脸识别的目的;
可以自动从摄像头中抠取人脸图片存储到本地,然后提取构建预设人脸特征;
根据抠取的 / 已有的同一个人多张人脸图片提取128D特征值,然后计算该人的128D特征均值;
然后和摄像头中实时获取到的人脸提取出的特征值,计算欧氏距离,判定是否为同一张人脸;
人脸识别人脸识别 / face recognition的说明:的说明:
wikipedia 关于人脸识别系统 / face recognition system 的描述:theywork by comparing selected facial featuresfrom given image with faces within a database.
本项目中就是比较 预设的人脸的特征和 摄像头实时获取到的人脸的特征;
核心就是提取128D人脸特征,然后计算摄像头人脸特征和预设的特征脸的欧式距离,进行比对;
效果如下(摄像头认出来我是default_person预设的人脸 / 另一个人不是预设人脸显示diff):
图1 摄像头人脸识别效果gif
1.总体流程总体流程
先说下 人脸检测 (face detection) 和 人脸识别 (face recognition) ,前者是达到检测出场景中人脸的目的就可以了,而后者不仅需要检测出人脸,还要和已有人脸数据进行比对,识别出是否在数据库中,
或者进行身份标注之类处理,人脸检测和人脸识别两者有时候可能会被理解混淆;
我的之前一些项目都是用dlib做人脸检测这块,这个项目想要实现的功能是人脸识别功能,借助的是 dlib官网中 face_recognition.py这个例程 (link:http://dlib.net/face_recognition.py.html);
核心在于 利用 “dlib_face_recognition_resnet_model_v1.dat” 这个model,提取人脸图像的128D特征,然后比对不同人脸图片的128D特征,设定阈值计算欧氏距离来判断是否为同一张脸;
# face recognition model, the object maps human faces into 128D vectors
facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")
shape = predictor(img, dets[0])
face_descriptor = facerec.compute_face_descriptor(img, shape)
图2 总体设计流程
2.源码介绍源码介绍
主要有
get_face_from_camera.py ,
get_features_into_CSV.py,
face_reco_from_camera.py
这三个py文件;
2.1get_face_from_camera.py / 采集构建采集构建XXX人脸数据人脸数据
人脸识别需要将 提取到的图像数据 和已有图像数据进行比对分析,所以这个py文件实现的功能就是采集构建XXX的人脸数据;
程序会生成一个窗口,显示调用的摄像头实时获取的图像(关于摄像头的调用方式可以参考我的另一博客//www.jb51.net/article/135512.htm);
按s键可以保存当前视频流中的人脸图像,保存的路径由 path_save = “xxxx/get_from_camera/” 规定;
按q键退出窗口;
摄像头的调用是利用opencv库的cv2.VideoCapture(0), 此处参数为0代表调用的是笔记本的默认摄像头,你也可以让它调用传入已有视频文件;
图3get_face_from_camera.py 的界面
这样的话,你就可以在 path_save指定的目录下得到一组捕获到的人脸;
图4 捕获到的一组人脸
源码如下:
# 2018-5-11
# By TimeStamp
# cnblogs: http://www.cnblogs.com/AdaminXie
import dlib # 人脸识别的库dlib
import numpy as np # 数据处理的库numpy
import cv2 # 图像处理的库OpenCv
# dlib预测器
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# 创建cv2摄像头对象
cap = cv2.VideoCapture(0)
# cap.set(propId, value)
# 设置视频参数,propId设置的视频参数,value设置的参数值
cap.set(3, 480)
# 截图screenshoot的计数器
cnt_ss = 0
剩余6页未读,继续阅读
资源评论
weixin_38670318
- 粉丝: 6
- 资源: 919
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功