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-Imagingfrom PIL import Image# 导入face_recogntion模块,可用命令安装 pip install face_recognitionimport 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_locationprint("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()
美颜前后对比如下图:
结尾:
以上就是本文的全部内容了,大家喜欢的记得点点赞!
最后完整代码已经打包整理好了,有需要的小伙伴,可以点击这行字体,要么私信小编!
Python实现人脸识别,一行代码,多种功能,易上手又好操作相关推荐
- 实战演示:使用Python编写人脸识别测试代码,让你的应用拥有智能感知能力
人脸识别是计算机视觉领域的一个重要应用.它使用计算机算法来识别和验证面部特征,通常用于安全认证.视频监控.人脸比对等方面.近年来,随着深度学习技术的发展,人脸识别的性能得到了极大的提升,成为了智能感知 ...
- Python实现人脸识别 + 手机推送功能,老板来了你就会收到短信提示
前言 在你上班的时候刷知乎,看视频,玩手机的时候,老板来了!不用担心,不用着急,基于最新的人脸识别 + 手机推送做出的 BossComing.老板站起来的时候,BossComing 会通过人脸识别发现 ...
- python实现人脸识别(face_recognition)
一.定义 1.介绍 本项目是世界上最强大.简洁的人脸识别库,你可以使用Python和命令行工具提取.识别.操作人脸. 本项目的人脸识别是基于业内领先的C++开源库dlib中的深度学习模型,用Label ...
- python学习之基于Python的人脸识别技术学习
摘要: 面部识别技术的应用越来越广泛,它广泛应用于安全系统.人机交互.社交媒体.医疗保健等领域.本文介绍了基于Python的人脸识别技术,包括人脸检测.人脸特征提取和人脸识别三个部分.我们使用Open ...
- python考勤管理系统_python基础教程:face++与python实现人脸识别签到(考勤)功能...
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要为大家详细介绍了face++与python实现人脸识别签到(考勤)功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一 ...
- python基础教程:face++与python实现人脸识别签到(考勤)功能
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要为大家详细介绍了face++与python实现人脸识别签到(考勤)功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一 ...
- python如何做考勤_python基础教程:face++与python实现人脸识别签到(考勤)功能
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要为大家详细介绍了face++与python实现人脸识别签到(考勤)功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一 ...
- python考勤统计_face++与python实现人脸识别签到(考勤)功能
face++与python实现人脸识别签到(考勤)功能 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: face++与python实现人脸识别签到(考勤)功能.t ...
- python实现人脸识别_python人脸识别代码实现丨内附代码
Python在人脸识别方面功能很强大,程序语言简单高效,下面小编来编程实现一下如何实现人脸识别.如有错点,还望斧正 识别图片中的人脸位置 #人脸识别分类器路径tool_url = r'C:\Users ...
- 刷脸签到python代码_背景提升|“刷脸”时代,如何运用Python实现人脸识别?
打开手机,不用输入任何密码,通过"刷脸"就可以轻松打开界面; 走进一家餐厅,即便没有手机和钱包,点餐后就能通过"刷脸"完成支付; 去银行取款,不带银行卡.身份证 ...
最新文章
- 在不影响配置下,清除netscreen密码
- [POI2007]ZAP-Queries
- flac3d命令流实例大全_如何在Linux上使用xargs命令
- Unity使用协程技术制作倒计时器
- Android基础教程之-------Android中两种设置全屏的方法!!!
- mysql pheonix hbase,mybatis连接phoenix操作hbase
- 离散数学 习题篇 —— 等价关系的计数
- 记录一次安装gaussian09的经历
- (20190401)IGS GNSS数据下载网址与下载说明
- matlab曲线拟合方法和函数拐点查找
- 自助装机配置专家点评3
- 使用node.js 脚手架搭建Vue项目
- window电脑访问Android照片,解决JPEG照片在windows无法打开
- 硅麦 (PDM)转USB接口芯片
- SpringBoot项目云端部署
- 2023年全国最新会计专业技术资格精选真题及答案34
- 小米8系统推送服务器,小米8推送基于Android 10的MIUI 11开发版
- 简书APP 使用产品报告
- docker 默认配置文件
- 单向链表与双向循环链表
热门文章
- 搞死SAP系统系列 让系统无法连接数据库
- 是你的栈啊-求你了告诉我逆波兰表达式
- staring mysql.the_mysql 启动异常失败 Starting MySQL..The server quit without updating PID file
- python pip 换源_Python pip换源教程
- 刚性捆绑,无线运营新模式
- CRM管理软件有哪些?这5款好用的CRM软件值得推荐!
- 计算机网络——wireshark抓包
- 谷仓(某校老师原创题)
- 面经:两年半经验,面10个公司,经28轮面试,拿9个offer,涨麻了!
- 快速了解 CMYK印刷色与三原色,CMY三原色为什么要加K黑色?