百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

如何用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-pip

4.安装编译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_CUDA

5.安装 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官网)
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

取消回复欢迎 发表评论: