为了账号安全,请及时绑定邮箱和手机立即绑定

python库介绍-face_recognition 人脸识别

标签:
Python

简介

face_recognition使用世界上最简单的人脸识别库,在Python或命令行中识别和操作人脸。

使用dlib最先进的人脸识别技术构建而成,并具有深度学习功能。 该模型在Labeled Faces in the Wild基准中的准确率为99.38%。

另外还提供了face_recognition命令行工具!

  • 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入) qq群:144081101 591302926  567351477

  • 道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting

接口自动化性能测试数据分析人工智能从业专家一对一线上培训大纲

快速入门

本节我们基于ubuntu16.04,python3,使用如下图片:

640

image.png

  • 快速入门

face_recognition

#!pythonimport face_recognition

image = face_recognition.load_image_file("test0.jpg")
face_locations = face_recognition.face_locations(image,model="cnn")
print(face_locations)

执行结果:

#!python$ python3 quick.py 
[(203, 391, 447, 147)]

model选择模型,默认为hog,该模式很多图片是无法识别的,为此一般用采用更精确但是速度更慢的cnn模型。

  • 显示图片:

quick2.py

#!pythonimport face_recognitionfrom PIL import Image

image = face_recognition.load_image_file("test0.jpg")
face_locations = face_recognition.face_locations(image,model="cnn")
top, right, bottom, left = face_locations[0]
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()
pil_image.save("quick2.jpg")

执行后会在当前目录生成quick2.jpg,并在屏幕显示美女头像。

244

image.png

  • 上口红

quick3.py

#!pythonimport face_recognitionfrom PIL import Image, ImageDraw

image = face_recognition.load_image_file("test1.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)
print(face_landmarks_list)for face_landmarks in face_landmarks_list:
    
    pil_image = Image.fromarray(image)
    d = ImageDraw.Draw(pil_image, 'RGBA')    
    # Gloss the lips
    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=3)
    d.line(face_landmarks['bottom_lip'], fill=(150, 0, 0, 64), width=3)    
    
    pil_image.show()
    pil_image.save("quick3.jpg")

上口红之前:

700

image.png

上口红之后:

700

image.png

个人总是觉得没上口红的更好看,偏偏有那么多喜欢化成妖怪的女人。

  • 框选

下面代码把脸部框选出来,注意:face_locations返回的图片和PIL使用的坐标不同,为此需要一定的转换。

quick4.py

#!pythonimport face_recognitionfrom PIL import Image, ImageDraw

image = face_recognition.load_image_file("test1.jpg")
locations = face_recognition.face_locations(image)
print(locations)
pos = locations[0]

pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image, 'RGBA')
d.rectangle((pos[3], pos[0], pos[1], pos[2]))
pil_image.show()
pil_image.save("quick4.jpg")

image.png

本文代码地址: https://github.com/china-testing/python-api-tesing/tree/master/python3_libraries/face_recognition

其他

  • 旋转

face_recognition只能识别头在上嘴在下的图片比较好,如果你的照片是横向的,有可能要旋转才能识别。


image.png

sleep.py

#!pythonimport face_recognitionfrom PIL import Image, ImageDraw

image = face_recognition.load_image_file("sleep.jpg")
locations = face_recognition.face_locations(image)
print(locations)
img = Image.open("sleep.jpg")
img = img.rotate(90,expand=1)
img.save("/tmp/tmp.jpg")
image = face_recognition.load_image_file("/tmp/tmp.jpg")
locations = face_recognition.face_locations(image)
print(locations)

pil_image = Image.fromarray(image)
pil_image.show()

执行结果:

#!python[][(166, 424, 255, 335)]

当然此图使用cnn模式不用旋转也是可以识别的,但是我们实验中发现一些图片,比如戴墨镜的横向图片,还是要旋转才能识别。

注意旋转方向是逆时针的。

参考资料

https://github.com/ageitgey/face_recognition



作者:Python测试开发人工智能
链接:https://www.jianshu.com/p/5b2f4b87bd5c


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消