如何用Python实现人脸识别?一文带你详细了解,几行代码就能搞定
off999 2024-09-14 07:06 53 浏览 0 评论
前言
Python中实现人脸识别功能有多种方法,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的,本文给大家分享使用Python实现简单的人脸识别功能的操作步骤,感兴趣的朋友一起看看吧!
摘要:一行代码实现人脸识别
- 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名。
- 接下来,你需要准备另一个文件夹,里面是你要识别的图片。
- 然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁,一行代码足以!!!
正文:
环境要求:
- Ubuntu17.10
- Python 2.7.14
环境搭建:
1.安装 Ubuntu17.10 > 安装步骤在这里
2.安装 Python2.7.14 (Ubuntu17.10 默认Python版本为2.7.14)
3.安装 git 、cmake 、 python-pip
#安装 git
$ sudo apt-get install -y git
# 安装 cmake
$ sudo apt-get install -y cmake
# 安装 python-pip
$ sudo apt-get install -y python-pip4.安装编译dlib
安装face_recognition这个之前需要先安装编译dlib
# 编译dlib前先安装 boost
$ sudo apt-get install libboost-all-dev
# 开始编译dlib
# 克隆dlib源代码
$ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .(注意中间有个空格)
$ cd ..
$ python setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA5.安装 face_recognition
# 安装 face_recognition
$ pip install face_recognition
# 安装face_recognition过程中会自动安装 numpy、scipy 等环境搭建完成后,在终端输入 face_recognition 命令查看是否成功
实现人脸识别:
示例一(1行代码实现人脸识别)
1.首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名:
known_people文件夹下有babe、成龙、容祖儿的照片
2.接下来,你需要准备另一个文件夹,里面是你要识别的图片: unknown_pic文件夹下是要识别的图片,其中韩红是机器不认识的
3.然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁:
识别成功!!!
示例二(识别图片中的所有人脸并显示出来)
# filename : find_faces_in_picture.py
# -*- coding: utf-8 -*-
# 导入pil模块 ,可用命令安装 apt-get install python-Imaging
from PIL import Image
# 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition
# 将jpg文件加载到numpy 数组中
image = face_recognition.load_image_file("/opt/face/unknown_pic/all_star.jpg")
# 使用默认的给予HOG模型查找图像中所有人脸
# 这个方法已经相当准确了,但还是不如CNN模型那么准确,因为没有使用GPU加速
# 另请参见: find_faces_in_picture_cnn.py
face_locations = face_recognition.face_locations(image)
# 使用CNN模型
# face_locations = face_recognition.face_locations(image, number_of_times_to_upsample=0, model="cnn")
# 打印:我从图片中找到了 多少 张人脸
print("I found {} face(s) in this photograph.".format(len(face_locations)))
# 循环找到的所有人脸
for face_location in face_locations:
# 打印每张脸的位置信息
top, right, bottom, left = face_location
print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))
# 指定人脸的位置信息,然后显示人脸图片
face_image = image[top:bottom, left:right]
pil_image = Image.fromarray(face_image)
pil_image.show()如下图为用于识别的图片
# 执行python文件
$ python find_faces_in_picture.py从图片中识别出7张人脸,并显示出来,如下图
示例三(自动识别人脸特征)
# filename : find_facial_features_in_picture.py
# -*- coding: utf-8 -*-
# 导入pil模块 ,可用命令安装 apt-get install python-Imaging
from PIL import Image, ImageDraw
# 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition
# 将jpg文件加载到numpy 数组中
image = face_recognition.load_image_file("biden.jpg")
#查找图像中所有面部的所有面部特征
face_landmarks_list = face_recognition.face_landmarks(image)
print("I found {} face(s) in this photograph.".format(len(face_landmarks_list)))
for face_landmarks in face_landmarks_list:
#打印此图像中每个面部特征的位置
facial_features = [
'chin',
'left_eyebrow',
'right_eyebrow',
'nose_bridge',
'nose_tip',
'left_eye',
'right_eye',
'top_lip',
'bottom_lip'
]
for facial_feature in facial_features:
print("The {} in this face has the following points: {}".format(facial_feature, face_landmarks[facial_feature]))
#让我们在图像中描绘出每个人脸特征!
pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image)
for facial_feature in facial_features:
d.line(face_landmarks[facial_feature], width=5)
pil_image.show()自动识别出人脸特征(轮廓)
示例四(识别人脸鉴定是哪个人)
# filename : recognize_faces_in_pictures.py
# -*- conding: utf-8 -*-
# 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition
#将jpg文件加载到numpy数组中
babe_image = face_recognition.load_image_file("/opt/face/known_people/babe.jpeg")
Rong_zhu_er_image = face_recognition.load_image_file("/opt/face/known_people/Rong zhu er.jpg")
unknown_image = face_recognition.load_image_file("/opt/face/unknown_pic/babe2.jpg")
#获取每个图像文件中每个面部的面部编码
#由于每个图像中可能有多个面,所以返回一个编码列表。
#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。
babe_face_encoding = face_recognition.face_encodings(babe_image)[0]
Rong_zhu_er_face_encoding = face_recognition.face_encodings(Rong_zhu_er_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]
known_faces = [
babe_face_encoding,
Rong_zhu_er_face_encoding
]
#结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)
print("这个未知面孔是 Babe 吗? {}".format(results[0]))
print("这个未知面孔是 容祖儿 吗? {}".format(results[1]))
print("这个未知面孔是 我们从未见过的新面孔吗? {}".format(not True in results))显示结果下如图
示例五(识别人脸特征并美颜)
# filename : digital_makeup.py
# -*- coding: utf-8 -*-
# 导入pil模块 ,可用命令安装 apt-get install python-Imaging
from PIL import Image, ImageDraw
# 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition
#将jpg文件加载到numpy数组中
image = face_recognition.load_image_file("biden.jpg")
#查找图像中所有面部的所有面部特征
face_landmarks_list = face_recognition.face_landmarks(image)
for face_landmarks in face_landmarks_list:
pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image, 'RGBA')
#让眉毛变成了一场噩梦
d.polygon(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 128))
d.polygon(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 128))
d.line(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 150), width=5)
d.line(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 150), width=5)
#光泽的嘴唇
d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128))
d.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128))
d.line(face_landmarks['top_lip'], fill=(150, 0, 0, 64), width=8)
d.line(face_landmarks['bottom_lip'], fill=(150, 0, 0, 64), width=8)
#闪耀眼睛
d.polygon(face_landmarks['left_eye'], fill=(255, 255, 255, 30))
d.polygon(face_landmarks['right_eye'], fill=(255, 255, 255, 30))
#涂一些眼线
d.line(face_landmarks['left_eye'] + [face_landmarks['left_eye'][0]], fill=(0, 0, 0, 110), width=6)
d.line(face_landmarks['right_eye'] + [face_landmarks['right_eye'][0]], fill=(0, 0, 0, 110), width=6)
pil_image.show()美颜前后对比如下图:
结尾:
以上就是本文的全部内容了,大家喜欢的记得点点赞!
相关推荐
- nvidia驱动更新在哪里(nvidia驱动更新有用吗)
-
N卡显卡驱动可以在官网更新。通常情况下,N卡显卡的驱动可以通过官方网站进行更新,它们会定期发布新的驱动程序以解决已知或新发现的问题,而且官网更新的驱动程序可以有效地解决很多显卡问题。此外,如果您不知道...
- u盘量产工具安卓版(u盘量产工具使用教程)
-
万能u盘量产工具。金士顿U盘量产工具可以改写U盘主控芯片数据实现U盘量产还原修复的功效。用户只需要将U盘插入计算机,使用金士顿U盘修复软件扫描修复和量产即可恢复。原理是重写和还原U盘的主控芯片数据,让...
- ghost纯净版哪个网站(ghost 正版)
-
windows7ghost纯净版特色:1、专业为电脑制作,定制版系统使笔记本电脑运行更加可靠。2、安装盘经过多名电脑安装人员测试,稳定性和兼容性非常好。3、通过多台不同硬件型号的计算机测试,没有蓝屏,...
- 联想笔记本电脑怎么连接无线网wifi
-
答:联想笔记本电脑连接无线网wifi的方法:1在桌面右键点击“网上邻居”,选择属性菜单。2.后右键单击“无线网络连接”选择“属性”,进入无线网络连接属性对话框。3.在可用无线连接列表里找到对应的佰网络...
- 一键ghost xp下载和安装(一键ghost在哪下载)
-
在xp系统下运行,点击开始-程序-一键GHOST,软件运行后会自动识别当前系统状态,根据不同情况(C盘映像是否存在)自动定位到不同的选项:1、如果不存在GHO文件,则自动定位到"备份"...
- 一键重装系统怎么删除(开机系统之家一键重装系统怎么删除)
-
第一种方法:正常选择系统进入后,您可以直接打开小白一键重装系统软件,在软件的其它设置选项中有个启动菜单,在这里您可以找到需要删除的开机引导菜单删除即可。第二种方法:正常开机进入Windows系统,...
-
- directx 11官方下载(directx11官网)
-
要在官网下载DX11,首先需要访问Microsoft的官方下载中心,并在搜索框中输入"DirectX11"。然后,选择适合操作系统的版本(一般都是Windows7和以上),下载并安装。注意,在下载前最好确保系统已经更新到...
-
2026-01-05 06:03 off999
-
- 一键清除系统垃圾(系统自带的一键清理垃圾有用吗)
-
清理电脑的缓存垃圾和深度清理,保证电脑运行速度1、鼠标右键单击,新建文本文档2,在文件中输入源代码echo正在清除系统垃圾文件,请稍等......del/f/s/q%systemdrive%\*.tmpdel/f/s/q...
-
2026-01-05 05:51 off999
- win10更新系统要多久(win10更新大概要多久)
-
15-35分钟,根据电脑配置不同,时间也不同。win10;Windows10是美国微软公司所研发的新一代跨平台及设备应用的操作系统。在正式版本发布后的一年内,所有符合条件的Windows7、Win...
- win10纯净版百度云(windows10纯净版百度网盘下载)
-
没法下载,win10本身不具备下载精简纯净版的功能下载纯净版windows10系统,可以首先考虑在微软官方网站下载。下载win10系统,需先下载系统安装工具MediaCreationTool,使用这个...
- win7下载秘钥(windows7官方下载密钥)
-
windows7激活密钥如下:PPBK3-M92CH-MRR9X-34Y9P-7CH2FQ8JXJ-8HDJR-X4PXM-PW99R-KTJ3H8489X-THF3D-BDJQR-D27PH-P...
- 电脑win7定时关机怎么设置(电脑win7定时关机怎么设置的)
-
要在win7中设置电脑定时关机,首先点击开始菜单,然后选择“控制面板”,在控制面板中找到并点击“系统和安全”,接着选择“电源选项”,在左侧菜单中点击“创建计划”,在弹出的窗口中点击“创建基本任务”,然...
- pe安装server2003系统(pe安装windows server 2003)
-
要安装WindowsServer2003,首先需要将安装光盘插入到计算机的光驱中。然后,启动计算机并按下任意键进入光盘启动程序。接下来,选择安装选项并按照屏幕提示进行操作,包括选择安装位置、输入许...
- 网易邮箱163登录注册下载(网易邮箱163登录注册下载安装)
-
163邮箱官网注册入口是;https://smart.mail.163.com/login.htm网易邮箱注册方法;1在浏览器搜索“网易邮箱”。2进入网易邮箱官网https://smart.mail....
-
- 清空了最近删除的照片可以找回吗
-
一:相册找回这个方法就是利用手机中的相册找回最近删除的照片,在照片误删前30天之内,所有删除的照片都会保存在手机相册中的【最近删除】中,当手机照片误删时,马上打开手机相册中的最近删除,通过找到最近删除中删除的照片来恢复手机误删的图片就可以了...
-
2026-01-05 02:03 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
