​前言

在有一些电影里面,特别是科幻高科技电影里面经常出现的一幕,获得某人的照片然后进行各种数据对比,然后找出这个人的个人信息:姓名、年龄、性别、工作等等。

理论上:你可以建立一个你感兴趣的百万级的数据库,给你个照片 ,你就可以得到她是谁,哪里的,信息都可以知道,而且因为人与人之间的网状的关联,你甚至可以知道她喜欢的人是谁,男朋友长啥样子。

相信我:一切都不是虚构的,你能做的更多!

思路:

一、数据收集,可以采用爬虫对网上海里的明星信息进行有针对的爬取

二、格式化数据,存入mysq,把明星的自拍照的文件名存入数据库中

三、使用百度的api对程序进行编写,说实话,百度人脸识别做的很棒了,精确度很高

四、你上传一张图片(或者你能想象到的方式),后面的程序会对你海量的数据库中人的信息进行比对

五、输出匹配到的人的信息,和相似度的数值。

直接上代码:

测试图片:

明星数据库:

明星的照片所在目录:

明星照片:

程序运行效果:

一共对数据库进行比对了5条信息

匹配到明星的信息:曾轶可 27 1990年1月3日出生于湖南省常德市汉寿县,创作型女歌手,演员。相似度:63.689125061

数据库:

目录:

项目总结:

人脸比对对照片有一定要求,因为我爬取的照片大小不规则,所以比对的时候,会有问题,人脸比对用的百度的api接口,感觉关键部分不是自己实现的,正在恶补数据结构和算法。

下面给大家介绍一个世界上最简洁的人脸识别库 face_recognition,你可以使用 Python 和命令行工具进行提取、识别、操作人脸。

基于业内领先的 C++ 开源库 dlib 中的深度学习模型,用 Labeled Faces in the Wild 人脸数据集进行测试,有高达99.38%的准确率。

安装:

最好是使用 Linux 或 Mac 环境来安装,Windows 下安装会有很多问题。在安装 face_recognition 之前你需要先安装以下几个库,注意顺序!

1.1 先安装 cmake 和 boost

pipinstallcmake

pipinstallboost

1.2 安装 dlib

pipinstall dlib

此处安装可能要几分钟。如安装出错,建议使用 whl 文件来安装

下载地址:https://pypi.org/simple/dlib/

1.3 安装 face_recognition

face_recongnition 一般要配合 opencv 一起使用

pipinstallface_recognition

pipinstallopencv-python

识别:

比如这里总共有三张图片,其中有两张已知,第三张是需要识别的图片

首先获取人脸中的信息

kobe_image = face_recognition.load_image_file("kobe.jpg")# 已知科比照片

jordan_image = face_recognition.load_image_file("jordan.jpeg")# 已知乔丹照片

unknown_image = face_recognition.load_image_file("unkown.jpeg")# 未知照片

kobe_face_encoding = face_recognition.face_encodings(kobe_image)[0]

jordan_face_encoding = face_recognition.face_encodings(jordan_image)[0]

unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

代码中前三行分别是加载三张图片文件并返回图像的 numpy 数组,后三行返回图像中每个面部的人脸编码

然后将未知图片中的人脸和已知图片中的人脸进行对比,使用 compare_faces() 函数, 代码如下:

known_faces = [

kobe_face_encoding,

jordan_face_encoding

]

results = face_recognition.compare_faces(known_faces, unknown_face_encoding)# 识别结果列表

print("这张未知照片是科比吗? {}".format(results[0]))

print("这张未知照片是乔丹吗? {}".format(results[1]))

运行结果如下:

不到二十行代码,就能识别出人脸是谁,是不是 so easy!

人脸标注:

仅仅识别图片中的人脸总是感觉差点什么,那么将识别出来的人脸进行姓名标注是不是更加有趣~

已知图片的识别和前面代码基本是一样的,未知图片代码多了人脸位置的识别,并使用了face_locations() 函数。代码如下:

face_locations = face_recognition.face_locations(unknown_image)

face_encodings = face_recognition.face_encodings(unknown_image, face_locations)

函数传入两个参数,返回以上,右,下,左固定顺序的脸部位置列表的作用是将已知脸部位置和未知面部编码进行比较,得到欧式距离~~~具体是什么我也不知道,距离就相当于相识度。

函数说明:face_distance(face_encodings, face_to_compare)

face_encodings:已知的面部编码

face_to_compare:要比较的面部编码

本次图片前面两张没有变化,第三张换成了科比和乔丹的合影,最终运行之后结果如下:

左边是原图,右边是识别后自动标注出来的图片。

importface_recognition

fromPILimportImage, ImageDraw

importnumpyasnp

defdraws():

kobe_image = face_recognition.load_image_file("kobe.jpg")

kobe_face_encoding = face_recognition.face_encodings(kobe_image)[0]

jordan_image = face_recognition.load_image_file("jordan.jpeg")

jordan_face_encoding = face_recognition.face_encodings(jordan_image)[0]

known_face_encodings = [

kobe_face_encoding,

jordan_face_encoding

]

known_face_names = [

"Kobe",

"Jordan"

]

unknown_image = face_recognition.load_image_file("two_people.jpeg")

face_locations = face_recognition.face_locations(unknown_image)

face_encodings = face_recognition.face_encodings(unknown_image, face_locations)

pil_image = Image.fromarray(unknown_image)

draw = ImageDraw.Draw(pil_image)

for(top, right, bottom, left), face_encodinginzip(face_locations, face_encodings):

matches = face_recognition.compare_faces(known_face_encodings, face_encoding)

name ="Unknown"

face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)

best_match_index = np.argmin(face_distances)

ifmatches[best_match_index]:

name = known_face_names[best_match_index]

draw.rectangle(((left, top), (right, bottom)), outline=(0,0,255))

text_width, text_height = draw.textsize(name)

draw.rectangle(((left, bottom - text_height -10), (right, bottom)), fill=(0,0,255), outline=(0,0,255))

draw.text((left +6, bottom - text_height -5), name, fill=(255,255,255,255))

deldraw

pil_image.show()

pil_image.save("image_with_boxes.jpg")

给人脸美妆

这个功能需要结合 PIL 一起使用。用法都差不多,首先就是将图片文件加载到 numpy 数组中,然后将人脸中的面部所有特征识别到一个列表中

image = face_recognition.load_image_file("bogute.jpeg")

face_landmarks_list = face_recognition.face_landmarks(image)

遍历列表中的元素,修改眉毛

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), wid=6)

根据以上代码做了,我用实力不行,打球又脏的 "大嘴" 博格特来做演示!

左边是原图,右边是加了美妆后的效果

你打球的样子像极了 cxk!

python修改个人信息代码,牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息...相关推荐

  1. python 修改文件名_【学习分享】利用python批量修改文件名

    1 前言 分享一个利用python批量修改文件名的方法,我们以前分享过用DOS命令来批量修改文件名,但是如果要修改多个文件夹内的文件名,用DOS命令就不好处理了,我们就来分享一下如何用python处理 ...

  2. 就是这么牛逼,利用Python绘制炫酷专业插图就是这么简单

    强烈推荐 Python 的绘图模块 matplotlib: python plotting .画出来的图真的是高端大气上档次,低调奢华有内涵~ 适用于从 2D 到 3D,从标量到矢量的各种绘图.能够保 ...

  3. 推荐一个牛逼的生物信息 Python 库 - Dash Bio

    翻译 | Lemonbit 来源 | Plotly 译文出品 | Python数据之道 推荐一个牛逼的生物信息 Python 库 - Dash Bio Dash Bio 是一个免费的开源 Python ...

  4. 牛逼c语言代码,这段c语言代码牛逼在哪?

    原标题:这段c语言代码牛逼在哪? 有人说C语言是世界上最牛逼的语言,因为操作系统就是用C语言编写的,学好了C才能更好的学习其他编程语言.为此,有人分享了下面一段代码,说是很牛逼的c语言代码,看得W3C ...

  5. 利用python 对比相似度_牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息...

    前言 在有一些电影里面,特别是科幻高科技电影里面经常出现的一幕,获得某人的照片然后进行各种数据对比,然后找出这个人的个人信息:姓名.年龄.性别.工作等等. 理论上:你可以建立一个你感兴趣的百万级的数据 ...

  6. 代码查看工具_这样Review代码牛逼啦!

    一个对项目负责的团队代码质量检查是必不可少的,有条件的团队经常有代码review习惯,这样可以使技术团队共同进步,但是一个庞大的工程做代码review其实是很麻烦的,所以就催生了很多的工具,今天我们就 ...

  7. 这款Python视频剪辑神器,牛逼!

    你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip("videoplayback.mp4").subclip(50,6 ...

  8. 这样Review代码牛逼啦!

    一个对项目负责的团队代码质量检查是必不可少的,有条件的团队经常有代码review习惯,这样可以使技术团队共同进步,但是一个庞大的工程做代码review其实是很麻烦的,所以就催生了很多的工具,今天我们就 ...

  9. python修改自己的代码_python修改微信和支付宝步数的示例代码

    项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该python脚本可以帮你实现. 实现方法 手机安装第三方软件乐心健 ...

最新文章

  1. 程序员如何在百忙中更有效地利用时间,如何不走岔路,不白忙(忙得要有效率,要有收获)...
  2. 当Tomcat配置安装都成功端口号也没问题时网页输入http://localhost:8080/打不开如何解决
  3. java 课件_java ppt课件
  4. 微信小程序Tab切换,滑动切换
  5. Android通讯录管理(获取联系人、通话记录、短信消息)(一)
  6. 查询ip区间的ip地址的sql语句
  7. layer 在标题中加点击监听事件
  8. 普通游戏显卡和专业图形显卡的区别
  9. 方舟非主机服务器无限距离,方舟生存进化怎么调主机距离
  10. Mac升级文件不见了怎么恢复?
  11. 预编译器错误:代码使用了less语言,但未安装相应的编译器插件,请前往插件市场安装该插件
  12. seo关键词优化技巧是什么
  13. org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
  14. 怎么关闭计算机硬件加速,怎么关闭硬件加速?关闭硬件加速的操作技巧分享
  15. Git追加本次提交到上次提交
  16. 银行定期存三个月利息计算机公式,银行存款利息如何计算?如定期三个月,半年、一年、二年 爱问知识人...
  17. liuyubobobo《机器学习》学习笔记(二)
  18. FCKEditor 的使用
  19. visual assist x_1.2kg华硕灵耀X逍遥体验:4K OLED翻转屏+11代i7处理器
  20. TP5后端,VUE前端请求聚合数据成语大全

热门文章

  1. 第十六届全国大学生智能车技术报告要求细则
  2. Python 基础课程第十天
  3. PTPX功耗分析实战, VCD, SAIF, FSDB的区别
  4. 【报告分享】2021年中国移动互联网半年度大报告-Mob研究院 (附下载)
  5. 基于STM32的虚拟示波器
  6. 计算机应用考试实操试题,计算机应用基础上机操作试题(1)
  7. 【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
  8. 计算机辅助设计与制造的应用,计算机辅助设计与制造(UG)
  9. 一文速学数模-时序预测模型(五)指数平滑法详解+Python代码实现
  10. 下载steam创意工坊