python人脸识别代码_一行Python代码搞定人脸识别

本文介绍了如何使用Python的face-recognition库进行人脸识别。通过安装和使用该库,可以实现人脸检测和识别,并提供了示例代码展示从图片中检测人脸并标记,以及进行人脸识别的流程。
摘要由CSDN通过智能技术生成

什么,只要一行代码就能搞定人脸识别?当然是假的啦。

虽然不能一行就搞定,依靠python强大的人脸识别包,只要十多行代码完全可以实现人脸识别的功能。这就叫站在巨人的肩膀上,看得更高更远。

face-recognition,使用最先进的人脸识别技术构建而成的python包,而且具有深度学习功能。经测试识别正确率高达99.38%。确实很高。

安装

因为face-recognition使用到了dlib库,这是c++写的一个包含机器学习,计算机视觉等算法的库,所以使用之前要先安装dlib。不过这还不行,dlib库又依赖一个叫做boost的东西,总之有些麻烦,所以我就不写详细步骤啦╰( ̄▽ ̄)╭。linux下安装比较简单,命令行下几行代码就搞定,windows安装见这里。

所有工作准备好之后,使用pip安装:

pip install face-recognition

人脸检测

如何检测一张图片中的人脸?face-recognition把带人脸的图片看成是由像素组成的二维数组,使用face_locations方法返回识别到的人脸的坐标(上下左右)。

这样就可以啦,接下来只要把这些人脸坐标用矩形框圈出来,然后保存即可。

import face_recognition

from skimage import draw, io

%matplotlib inline

# 图片文件

files = "F:\data\people.jpg"

# 加载图片

image = face_recognition.load_image_file(files)

# 识别人脸坐标

face_locations = face_recognition.face_locations(image)

# 我们在此使用之前介绍过的skimage库进行绘制

# 读出的图片在skimage中不能使用,故重新导入

img = io.imread(files)

print("I found{}face(s) in this photograph.".format(len(face_locations)))

# 循环标记人脸

for face_location in face_locations:

# 每个人脸的坐标

top, right, bottom, left = face_location

# 为每个人脸画四边形

# polygon_perimeter作用是绘制不填充的多边形

rr, cc = draw.polygon_perimeter([top, top, bottom, bottom], [left, right, right, left])

# 设置颜色为红色

draw.set_color(img, [rr, cc], [255, 0, 0])

# 保存

io.imsave('F:result.jpg', img)

I found 24 face(s) in this photograph.

我们打开图片看看效果。

import matplotlib.pyplot as plt

from skimage import io

origin = io.imread(files)

reco = io.imread('f:result.jpg')

plt.subplot(1, 2, 1)

plt.imshow(origin)

plt.subplot(1, 2, 2)

plt.imshow(reco)

效果不错,都识别出来了。

人脸识别

既然能够识别出有没有人脸,有可能知道这个人是谁吗?当然可以了,前提是你要提供一张包含某个人脸的照片。使用face_encodings对人脸进行编码,然后使用compare_faces方法比较即可。看代码。

import face_recognition

# 首先打开一张已经知道是谁的照片,然后打开另一张照片

zhuyizhi_image = face_recognition.load_image_file("F:zhuyizhi.jpg")

unknown_image = face_recognition.load_image_file("F:unknow.jpg")

# 识别出已知和未知人脸的面部特征

zhu_face_encoding = face_recognition.face_encodings(zhuyizhi_image)[0]

unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

# 可以添加多个已知的人脸照片

known_faces = [

zhu_face_encoding,

]

# 比较已知人脸和未知人脸,返回结果为true或者false。

results = face_recognition.compare_faces(known_faces, unknown_face_encoding)

print("Is the unknown face a picture of zhuyizhi? {}".format(results[0]))

print("Is the unknown face a new person that we've never seen before? {}".format(not True in results))

Is the unknown face a picture of zhuyizhi? True

Is the unknown face a new person that we've never seen before? False

除了能检测出和识别出人脸之外,face-recognition还提供深度学习参数的支持,使得识别率更高。

本人才疏学浅,上文中难免有些错误,还请各位品评指正。如果觉得写的还行,欢迎大家多多分享哈。

公众号推荐:【Python学习交流】

可部署到云主机(Heroku,AWS……)! 使用dlib最先进的面部识别功能构建而成,具有深度学习功能。该模型在Wild标记的Labeled Faces中具有99.38%的准确度 。 这提供了一个简单的命令行工具,允许从命令行对图像文件夹进行面部识别! 1、找到图片中出现的所有面孔 2、获取每个人的眼睛,鼻子,嘴巴和下巴的位置和轮廓。 3、应用数字化妆 4、识别每张照片中出现的人物。 5、可以将此库与其他Python库一起使用来进行实时人脸识别。 使用要求 Python 3.3+或Python 2.7 macOS或Linux(Windows未正式支持,但可能有效) 人脸检测 在照片中找到面孔 在照片中找到面孔(使用深度学习) 使用GPU(使用深度学习)批量查找图像中的面孔 使用网络摄像头模糊实时视频中的所有人脸(需要安装OpenCV) 面部特征 识别照片中的特定面部特征 应用(可怕的丑陋)数字化妆 面部识别 根据已知人物的照片查找并识别照片中的未知面部 识别并在照片中的每个人周围绘制框 通过数字面部距离比较面部而不仅仅是真/假匹配 使用网络摄像头识别实时视频中的人脸 - 简单/慢速版本(需要安装OpenCV) 使用网络摄像头识别实时视频中的人脸 - 更快的版本(需要安装OpenCV) 识别视频文件中的面部并写出新的视频文件(需要安装OpenCV) 用相机识别Raspberry Pi上的脸部 运行Web服务以通过HTTP识别面部(需要安装Flask) 使用K近邻分类器识别面部
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值