查看原文
其他

这顶海贼王的帽子,我Python给你带上了 | 【人脸识别应用】

神秘的铁头娃 Python学习开发 2019-05-25

微信公众号:AI算法与图像处理
关注可了解更多的资料及技巧。问题或建议,请公众号留言;
如果你觉得对你有帮助,欢迎分享和转发哈
本文主要参考:

https://zhuanlan.zhihu.com/p/32299758?utm_source=wechat_session&utm_medium=social&utm_oi=704056637840695296

内容目录

故事起因思路与实现准备工作详细代码和效果总结1.应用的知识2.存在的问题3.开阔思维

故事起因

海贼王里,有很多人都戴着帽子,有的帽子对他有着很大的含义,就像是路飞,把他的草帽视若生命,下面就说一说那些戴帽子的男人,当然没有戴绿色的,除了索隆的绿色头巾。

路飞,对于路飞的草帽,大家都知道那是香克斯交给路飞的,他和路飞约定,等到有一天大海上相遇,路飞再还给香克斯,路飞的草帽,是梦想的开始,也仿佛是一种精神的传承,路飞把他的草帽视若生命,不允许别人践踏,即使丢掉生命。
当然还有,乔巴,罗,艾斯,萨博等等

所以你是不是也想来一个?

图片来源:
https://baijiahao.baidu.com/s?id=1572083326100292&wfr=spider&for=pc

思路与实现

1.找到头(脸)——寻找放置位置
2.将帽子缩放到一定比例——寻找合适的帽子
3.将帽子放在头(脸)上面

准备工作

1.素材(一张头像,一个帽子)
2.导入库
face_recogniton——实现人脸检测
PIL——完成图像的基本操作
这边作者使用的环境是Ubuntu 16.04+Python2.7.12
库安装命令

pip install face_recognition
pip install pillow #PIL库

详细代码和效果

from PIL import Image
import face_recognition

img_path = raw_input("image path:")

image = face_recognition.load_image_file(img_path)
face_locations = face_recognition.face_locations(image)
print("Found {} face(s) in this photograph.".format(len(face_locations)))

human_img = Image.open(img_path)
human_img = human_img.convert("RGBA")

hat_img = Image.open("./lv.jpg")
hat_img = hat_img.convert("RGBA")

for face_location in face_locations:
    top, right, bottom, left = face_location
    top -= 10
    print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))

    head_h = bottom-top#hight of head
    head_l = right-left#length of head

    hat_img = hat_img.resize( (head_l,head_h) )#convert size of hat
    hat_region = hat_img
    #hat_region = hat_region.rotate(6)

    human_region = ( left, top-head_h, right, top )

    human_img.paste(hat_region, human_region,mask=hat_img)

human_img.show()
human_img.save("hape.png")  

效果展示!

对不起拿错帽子了

总结

1.应用的知识

1)人脸识别库和图像基础库的使用
2)简单的数学变换

2.存在的问题

1)帽子图片采用背景为纯黑和纯白均无法隐藏,这里需要采用背景为透明的图片,由于精力有限(太懒了),所以没有弄,链接附上
https://zhidao.baidu.com/question/274669731.html
2)face_recognition库对于漫画人物有时候也会识别成“人”,所有识别还是存在一定的问题

3.开阔思维

这个操作可以拓宽到很多地方,例如,现在很多拍照app有给人脸加装饰的功能等,实际上就是将这里的“帽子”换成其他东西。

代码:https://github.com/SCUTPZW/AI_study/blob/master/04-hat

素材后台回复 “hat”  可以获得

希望我们都能够找到那顶拥有生命一般意义的‘帽子“,fighting!

喜欢的朋友们,点个好看吧!

特别感谢分享的小伙伴!

非常感谢大家的支持!


 END 



【推荐阅读】

python学习大全:python基础进阶+人工智能+机器学习+神经网络

TensorFlow官方中文版教程 | 【妈妈再也不用担心我的学习了?】

新的一年追求新的高度 | 【优质公众号推荐】

用聚类方法结合卷积网络,实现无监督端到端图像分类

资源说明


【有趣的可视化操作】

用Python给你的代码上个进度条吧  | 【代码也要面子的】

用Python搞出自己的云词图 | 【带你装起来】

python打印神兽佛祖和美女 | Buddha Bless, No Bug !

Python绘制可爱的卡通人物 | 【turtle使用】

用python搞点“心”东西


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存