Python三十行代码实现简单人脸识别的示例代码
作者:徐先生没洗头 发布时间:2022-08-29 18:07:49
标签:Python,人脸识别
一、库介绍
opencv,face_recognition,numpy,以及dlib
注意:
安装opencv速度可能过慢,需要更换国内镜像源,参考:https://www.jb51.net/article/208359.htm
附带Python3.7,64位版本 dlib whl下载路径:dlib-19_jb51.rar
二、库安装
pip install opencv-python
pip install face_recognition
pip install numpy
dlib库需进入whl文件路径下安装
pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl
三、face_recognition库简单介绍
face_recognition的load_image_file方法会加载图片,并返回一个ndarray类型的数据
face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
image = face_recognition.load_image_file(face_path)
face_recognition的face_encoding方法,可从返回的ndarray类型数据中提取人脸特征,可同时提取多个特征,返回值为列表类型
face_encoding = face_recognition.face_encodings(image)[0]
face_recognition的face_location方法可以获取图片中所有人脸的位置,其返回值为一个列表
face_locations = face_recognition.face_locations(rgb_frame)
四、代码实现以及注释讲解
# coding = utf-8
import dlib
import cv2
import face_recognition
import os
# 创建视频对象
video_capture = cv2.VideoCapture(0)
# 加载需要识别的人脸图片(这张图片需要仅有一张脸)
# face_recognition的load_image_file方法会加载图片,并返回一个ndarray类型的数据
# ndarray类型就是NumPy的数组类型,其中的元素类型可以一致也可以不一致
face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
image = face_recognition.load_image_file(face_path)
# face_recognition的face_encoding方法,可从返回的ndarray类型数据中提取人脸特征,可同时提取多个特征,返回值为列表类型
# 因为照片中只有一个人脸,所以我们取列表的第一个值
face_encoding = face_recognition.face_encodings(image)[0]
while True:
# 从视频对象中读取一帧照片
ret,frame = video_capture.read()
# 将照片缩小,加快处理速度,这里将其缩小为原图的1/4
# frame = cv2.rectangle(frame,(0,0),fx=0.25,fy=0.25)
# 因为cv2用的是BGR色彩,我们组要将其转化为RGB进行处理
rgb_frame = frame[:,:,::-1] # 列表转置操作
# face_recognition的face_location方法可以获取图片中所有人脸的位置,其返回值为一个列表
face_locations = face_recognition.face_locations(rgb_frame)
print("共从视频中找到了{}张人脸".format(len(face_locations)))
# 获取视频中所有人脸的特征
face_encodings = face_recognition.face_encodings(rgb_frame,face_locations)
for face in face_encodings:
# 比较两个特征值——encoding1与encoding2,匹配返回True,否则返回False。tolerance越低,顾名思义,容错率越低,返回值为列表类型
match = face_recognition.compare_faces([face_encoding],face,tolerance=0.4)
name = "不认识的人"
if match[0]:
# face为图片名称
name = os.path.basename(face_path[0:-4])
print("找到了{}".format(name))
来源:https://blog.csdn.net/X_xs_mxt/article/details/115130201


猜你喜欢
- 本文实例讲述了Python高级编程之继承问题。分享给大家供大家参考,具体如下:多继承问题1.单独调用父类: 一个子类同时继承自多个父类,又称
- 1.Python hasattr() 函数描述hasattr() 函数用于判断对象是否包含对应的属性。语法hasattr 语法:hasatt
- python去除空格,tab制表符和\n换行符python中常用的替换字符串的函数有replace(),其用法相信大家都比较熟悉举个例子st
- CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的。指定的临时命名结果集,这些结果集
- 一、读取配置文件我的目录如下,在config下有一个config.ini配置文件配置文件内容# 定义config分组[config]plat
- 在 EeePC 上装了个 Mac OS X,相应的开发工具也选择了 Coda。在
- 说明可以调取k8s API 接口的工具有很多,这里我就介绍下client-gogitlab上client-go项目地址: https://g
- 常用快捷键全部快捷键1、编辑(Editing)2、查找/替换(Search/Replace)3、运行(Running)4、调试(Debugg
- 注:使用的是Python 2.7。一个简单实现class Foo(object): __instance
- 前言这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的file_manager.py""&quo
- 本文主要介绍了在python3.9下如何安装scrapy的方法,分享给大家,具体如下:安装命令:pip install scrapy -i
- 将视频中的音频分离出来简单介绍使用python将音频从视频当中分离出来,形成一个mp3格式的音乐。使用环境和模块1.python 3.72.
- opencv 进行任意形状目标识别,供大家参考,具体内容如下工作中有一次需要在简单的图上进行目标识别,目标的形状不固定,并且存在一定程度上的
- Python中numpy数组的合并有很多方法,如- np.append() - np.concatenate() - np.stack()
- 本文实例为大家分享了python3.5基于TCP实现文件传输的具体代码,供大家参考,具体内容如下服务器代码# _*_ coding:utf-
- 今天研究了一下JS的用setAttribute方法实现一个页面两份样式表的效果,具体方法如下:第一步:在连接样式表的元素里定义一个id,例如
- 最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God !有时候没有及时处理,内核
- 背景在吉日嘎拉的软件编程走火入魔之:数据库事务处理入门(适合初学者阅读)文章中关于MS SQL Server和Oracle对数据库事务处理的
- 想要使用多个CPU核心来进行测试,可以使用 -n 参数( 或者 --numprocesses)(使用8个核心来跑测试用例)pytest -n
- Python自动的os库是和操作系统交互的库,常用的操作包括文件/目录操作,路径操作,环境变量操作和执行系统命令等。文件/目录操作获取当前目