在当今社会,人脸识别技术已经广泛应用于安全、金融、娱乐等多个领域。本文将介绍如何使用Python编程语言,结合OpenCV和Dlib库来实现人脸识别的功能。
首先,我们需要了解一些基础知识。人脸识别主要包括以下几个步骤:人脸检测、人脸对齐、特征提取和匹配。OpenCV和Dlib是两个常用的开源计算机视觉库,它们都提供了丰富的人脸识别相关的函数和算法。
接下来,我们将详细介绍如何利用OpenCV和Dlib实现人脸识别。首先,我们需要安装这两个库。在命令行中输入以下命令即可安装:
shell复制代码
|
pip install opencv-python
|
|
pip install dlib
|
安装完成后,我们可以使用以下代码来加载库:
python复制代码
接下来,我们将介绍如何使用OpenCV和Dlib来实现人脸识别。首先,我们需要使用OpenCV的人脸检测器来检测图像中的人脸。在OpenCV中,可以使用Haar级联分类器或者HOG特征算法来检测人脸。这里我们以Haar级联分类器为例:
python复制代码
|
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
|
|
img = cv2.imread('test.jpg')
|
|
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
|
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
|
上述代码将加载Haar级联分类器,并将其应用于图像中。然后,我们使用
detectMultiScale
函数来检测图像中的人脸。该函数将返回一个包含人脸位置信息的矩形数组。
接下来,我们将使用Dlib的人脸对齐器来对齐人脸。在Dlib中,可以使用形状模型来对齐人脸。这里我们以形状模型为例:
python复制代码
|
detector = dlib.get_frontal_face_detector()
|
|
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
|
|
for face in faces:
|
|
face_image = img[face[0][1]:face[0][3], face[0][0]:face[0][2]]
|
|
gray = cv2.cvtColor(face_image, cv2.COLOR_BGR2GRAY)
|
|
rects = detector(gray)
|
|
for rect in rects:
|
|
shape = predictor(gray, rect)
|
上述代码将加载Dlib的人脸检测器和人脸对齐器,并将其应用于检测到的人脸上。然后,我们使用
predictor
函数来对齐人脸。该函数将返回一个包含68个点的形状对象。
最后,我们可以使用OpenCV的特征提取器和匹配器来提取和匹配人脸特征。在OpenCV中,可以使用SIFT、SURF、ORB等特征提取器来提取人脸特征。这里我们以SIFT为例:
python复制代码
|
sift = cv2.xfeatures2d.SIFT_create()
|
|
descriptors = sift.compute(gray, keypoints)
|
上述代码将加载SIFT特征提取器,并将其应用于图像中。然后,我们使用
compute
函数来提取人脸特征。该函数将返回一个包含特征描述符的向量对象。
接下来,我们可以使用BFMatcher来匹配人脸特征。在OpenCV中,可以使用BFMatcher来匹配两个向量对象之间的特征描述符。这里我们以BFMatcher为例:
python复制代码
|
bf = cv2.BFMatcher()
|
|
matches = bf.knnMatch(descriptors1, descriptors2, k=2)
|
上述代码将加载BFMatcher匹配器,并将其应用于两个向量对象之间的特征描述符。然后,我们使用
knnMatch
函数来匹配特征描述符。该函数将返回一个包含匹配结果的对象数组。
接下来,我们将介绍如何使用OpenCV和Dlib来实现人脸识别。首先,我们需要使用OpenCV的人脸检测器来检测图像中的人脸。最后,我们可以使用OpenCV的特征提取器和匹配器来提取和匹配人脸特征。在OpenCV中,可以使用SIFT、SURF、ORB等特征提取器来提取人脸特征。在OpenCV中,可以使用BFMatcher来匹配两个向量对象之间的特征描述符。接下来,我们将使用Dlib的人脸对齐器来对齐人脸。上述代码将加载Dlib的人脸检测器和人脸对齐器,并将其应用于检测到的人脸上。函数来检测图像中的人脸。
支持功能如下
1. 调用摄像头进行
人脸识别
, 支持多张人脸同时识别 / Detect and recognize single or multi faces from camera;
2. Tkinter 人脸录入界面, 支持录入时设置 (中文) 姓名 / Face register GUI with Tkinter, support setting (chinese) name when registering
3. introduction/face_register_tkinter_GUI.png
简单的
OpenCV
摄像头人脸录入界面 / Simple face register GUI with
OpenCV
, tkinter not needed and cannot set name
python
+
opencv
+
dlib
实现
人脸检测与表情识别
一,
dlib
简单介绍:
Dlib
包含广泛的机器学习算法。所有的设计都是高度模块化的,快速执行,并且通过一个干净而现代的C ++ API,使用起来非常简单。它用于各种应用,包括机器人技术,嵌入式设备,手机和大型高性能计算环境。
二,识别规则:
1、嘴巴张开距离占面部识别框宽度的比例越大,说明情绪越激动,可能是非常开心,也可能是非常惊讶。
互联网时代。
请在此文centos7上安装JupyterHub的基础上安装
opencv
-
python
,
dlib
,face_recognition,scikit-image。
安装
opencv
-
python
及其他
pip3 install
opencv
-
python
opencv
-contrib-
python
imutils pytesseract pillow
源码安装
dlib
(详情介绍在http://
dlib
.net/ml.html,我用的版本是19.19,构建过程慢),请到官网下载
dlib
地址
wget http://
dlib
.net/files/
dlib
-1
3.搜索对应版本的
dlib
文件下载好后用命令在适合的位置进行安装
python
3.8的链接:https://pan.baidu.com/s/1kLn0uEqO5xinuTMZzk3fFA
提取码:kh99
python
3.7的链接:https://pan.baidu.com/s/14cxfDkC2dODyncLAZ3
目录一、下载需要的
dlib
包和
opencv
包二、
dlib
的模型下载三、
Python
实现
摄像头人脸检测和添加简单墨镜(1)头像检测(2)添加简单墨镜四、总结五、参考资料
一、下载需要的
dlib
包和
opencv
包
1.
dlib
包含广泛的机器学习算法。所有的设计都是高度模块化的,快速执行,并且通过一个干净而现代的C ++ API,使用起来非常简单。它用于各种应用,包括机器人技术,嵌入式设备,手机和大型高性能计算环境。
2.下载之后,安装
dlib
库
,可参考其他优秀博主的帖子:
python
3.7添加
dlib
模块
支持功能如下
1. 调用摄像头进行
人脸识别
, 支持多张人脸同时识别 / Detect and recognize single or multi faces from camera;
2. Tkinter 人脸录入界面, 支持录入时设置 (中文) 姓名 / Face register GUI with Tkinter, support setting (chinese) name when registering
3. introduction/face_register_tkinter_GUI.png
简单的
OpenCV
摄像头人脸录入界面 / Simple face register GUI with
OpenCV
, tkinter not needed and cannot set name
Python
3+
Dlib
+
Opencv
实现
摄像头采集人脸并对表情进行实时分类判读一.
dlib
以及
opencv
-
python
库
安装1.1
dlib
库
安装1.2
opencv
-
python
库
安装二.
dlib
的68点模型三.
Python
实现
摄像头人脸检测3.1
python
代码3.2 运行结果
一.
dlib
以及
opencv
-
python
库
安装
1.1
dlib
库
安装
在Anaconda Prompt下输入以下命令
pip install
dlib
如果下载失败,可能是网速太慢,多试几次即可。但如果始终不行可
Python
语言
、
dlib
、
OpenCV
、Pyqt5界面设计、sqlite3数据
库
本系统使用
dlib
作为
人脸识别
工具,
dlib
提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并映射到128维空间向量再度量它们的欧氏距离是否足够小来判定是否为同一个人。
二、方法
实现
、
实现
步骤
1、实例化人脸检测模型、人脸关键点检测模型、
人脸识别
模型
2、电脑摄像头设备加载一对图片
3、分别获取图片中的人脸图片所映射的空间向量,即人脸特征值
4、计算特征向量欧氏距离,根据阈值判断是否为同一个人
dlib
人脸特征检测原理
1、提取特征点:例:
2、将特征值保存
3、计算特征数据集的欧氏距离作对比,当误差小于一定阙值就判定为同一人。
其他学习项目:
OpenCV
+
dlib
人脸识别
门禁管理系统
Python
语言
、
dlib
、
OpenCV
、Pyqt5、sqlite3数据
库
OpenCV
+
dlib
人脸识别
考勤管理系统
Python
语言
、
dlib
、
OpenCV
Python
语言
、
dlib
、
OpenCV
、Pyqt5界面设计、sqlite3数据
库
本系统使用
dlib
作为
人脸识别
工具,
dlib
提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并映射到128维空间向量再度量它们的欧氏距离是否足够小来判定是否为同一个人。
二、方法
实现
、
实现
步骤
1、实例化人脸检测模型、人脸关键点检测模型、
人脸识别
模型
2、电脑摄像头设备加载一对图片
3、分别获取图片中的人脸图片所映射的空间向量,即人脸特征值
4、计算特征向量欧氏距离,根据阈值判断是否为同一个人
dlib
人脸特征检测原理
1、提取特征点:例:
2、将特征值保存
3、计算特征数据集的欧氏距离作对比,当误差小于一定阙值就判定为同一人。
其他学习项目:
OpenCV
+
dlib
人脸识别
门禁管理系统
Python
语言
、
dlib
、
OpenCV
、Pyqt5、sqlite3数据
库
OpenCV
+
dlib
人脸识别
考勤管理系统
Python
语言
、
dlib
、
OpenCV
face_recognition_py
本项目基于
OpenCV
使用Haar级联与
dlib
库
进行人脸检测及实时跟踪,应用LBPH算法
开发
了一个功能相对完整的
人脸识别
系统。系统采用sqlite3进行序列化数据存储,能够对陌生人脸闯入进行报警,并拥有基于PyQt5设计的GUI
实现
。
如何运行?
以下操作基于Anaconda3环境,并在Windows10 x64上测试。
$ git clone https://github.com/winterssy/face_recognition_py.git
$ cd face_recognition_py
创建
Python
虚拟环境
$ conda create -n
opencv
python
=3.6
$ activate
opencv
安装
OpenCV
$ cd modules
$ pip install
在这篇博客中,将演示如何使用面部标志检测来检测图像中的各种面部结构。
具体来说包括,如何检测和提取:口 右眉 左眉 右眼 左眼 鼻子 下颚线
这是通过
dlib
的预先训练好的面部标志检测器以及一些
OpenCV
和
Python
魔术切片
实现
的。...
Python
基于
人脸识别
的门禁管理系统源码,基于
人脸识别
的门禁管理系统
该项目为宿舍门禁系统管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据
库
、Redis为缓存、
Dlib
为
人脸识别
程序
库
。该项目为个人学校毕业设计。
Python
基于
人脸识别
的门禁管理系统源码,基于
人脸识别
的门禁管理系统
该项目为宿舍门禁系统管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据
库
、Redis为缓存、
Dlib
为
人脸识别
程序
库
。该项目为个人学校毕业设计。
Python
基于
人脸识别
的门禁管理系统源码,基于
人脸识别
的门禁管理系统
该项目为宿舍门禁系统管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据
库
、Redis为缓存、
Dlib
为
人脸识别
程序
库
。该项目为个人学校毕业设计。
Python
基于
人脸识别
的门禁管理系统源码,基于人脸
Python
人脸识别
是一种应用广泛的技术,可以用于各种领域,如安全监控、
人脸识别
门禁、
人脸识别
支付等。本文将介绍如何使用
OpenCV
和
dlib
库
进行
Python
人脸识别
。
1. 安装
OpenCV
和
dlib
库
在终端中输入以下命令安装
OpenCV
和
dlib
库
:
pip install
opencv
-
python
pip install
dlib
2. 导入
库
在
Python
代码中导入
OpenCV
和
dlib
库
:
```
python
import cv2
import
dlib
3. 加载人脸检测器
使用
dlib
库
中的人脸检测器,加载预训练模型:
```
python
detector =
dlib
.get_frontal_face_detector()
4. 加载
人脸识别
模型
使用
dlib
库
中的
人脸识别
模型,加载预训练模型:
```
python
predictor =
dlib
.shape_predictor("shape_predictor_68_face_landmarks.dat")
facerec =
dlib
.face_recognition_model_v1("
dlib
_face_recognition_resnet_model_v1.dat")
5. 加载测试图片
使用
OpenCV
库
加载测试图片:
```
python
img = cv2.imread("test.jpg")
6. 人脸检测
使用人脸检测器检测图片中的人脸:
```
python
dets = detector(img, 1)
7.
人脸识别
对于每个检测到的人脸,使用
人脸识别
模型提取特征并进行比对:
```
python
for i, d in enumerate(dets):
shape = predictor(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
# 进行比对
8. 显示结果
使用
OpenCV
库
显示结果:
```
python
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
完整代码:
```
python
import cv2
import
dlib
# 加载人脸检测器
detector =
dlib
.get_frontal_face_detector()
# 加载
人脸识别
模型
predictor =
dlib
.shape_predictor("shape_predictor_68_face_landmarks.dat")
facerec =
dlib
.face_recognition_model_v1("
dlib
_face_recognition_resnet_model_v1.dat")
# 加载测试图片
img = cv2.imread("test.jpg")
# 人脸检测
dets = detector(img, 1)
#
人脸识别
for i, d in enumerate(dets):
shape = predictor(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
# 进行比对
# 显示结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:本文只提供了
Python
人脸识别
的基本流程,具体
实现
需要结合实际情况进行调整和优化。
CSDN-Ada助手: