怎么用Python代码实现人脸识别
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"怎么用Python代码实现人脸识别"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用Python代码实现人脸识别"文章能帮助大家解决问题。
千家信息网最后更新 2025年02月23日怎么用Python代码实现人脸识别
这篇文章主要介绍"怎么用Python代码实现人脸识别"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用Python代码实现人脸识别"文章能帮助大家解决问题。
正文:
环境要求:
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.pyface_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-Imagingfrom PIL import Image, ImageDraw # 导入face_recogntion模块,可用命令安装 pip install face_recognitionimport 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_recognitionimport 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-Imagingfrom PIL import Image, ImageDraw # 导入face_recogntion模块,可用命令安装 pip install face_recognitionimport 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()
美颜前后对比如下图:
关于"怎么用Python代码实现人脸识别"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
人脸
图片
文件
命令
图像
模块
特征
面部
数组
文件夹
示例
面孔
代码
utf-8
编译
位置
模型
环境
知识
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安徽金亚太智能网络技术
七雄争霸单机假的架设服务器
数据库企业版软件
乡镇开展网络安全联合检查
信息技术试讲数据库
护苗网络安全教育简讯
全面落实国家网络安全宣传
中学生网络安全准则
软件开发学点什么技能好
电脑做流媒体服务器
网络技术有限公司成立申请
硕士论文 数据库
建立数据库时连接出错
软件开发面试都不会怎么办
终端机 云服务器
中兴服务器管理口做系统
设备侧网络安全管理
计算机网络技术学专业学什么
html 网页数据库
数据库迁移到另一台电脑
电力 网络安全 溯源
上饶物理服务器要多少费用
网络技术员是黑客吗
软件开发私活发布
深州市网络安全宣传周
网络技术员怎么考
数据库sql激活
河北石家庄盘古网络技术有限公司
马士兵网络安全怎么样
筑牢国家网络安全屏障要做到