互联网之无所遁形!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互联网之无所遁形!相关的知识,希望对你有一定的参考价值。
其实一直对电影里面的对犯人进行人脸匹配然后,刷出来犯人信息很感兴趣,今天晚上一时兴起,就搞了一把小的。
理论上:你可以建立一个你感兴趣的百万级的数据库,给你个照片 ,你就可以得到她是谁,哪里的,信息都可以知道,而且因为人与人之间的网状的关联,你甚至可以知道她喜欢的人是谁,男朋友长啥样子。
想信我:一切都不是虚构的,你能做的更多!
思路:
一、数据收集,可以采用爬虫对网上海里的明星信息进行有针对的爬取
二、格式化数据,存入mysq,把明星的自拍照的文件名存入数据库中
三、使用百度的api对程序进行编写,说实话,百度人脸识别做的很棒了,精确度很高
四、你上传一张图片(或者你能想象到的方式),后面的程序会对你海量的数据库中人的信息进行比对
五、输出匹配到的人的信息,和相似度的数值。
直接上代码:
# encoding:utf-8` import base64 import urllib import urllib2 import simplejson as json from os import listdir import mysqldb import sys reload(sys) sys.setdefaultencoding(‘utf-8‘) def conmysql(): conn= MySQLdb.connect( host=‘localhost‘, port = 3306, user=‘root‘, passwd=‘123456‘, db =‘xxnlove‘, charset=‘utf8‘ ) #cur = conn.cursor() return conn ‘‘‘ 人脸比对接口 ‘‘‘ def facecompar(image01,image02): matchUrl = "https://aip.baidubce.com/rest/2.0/face/v2/match" # 二进制方式打开图文件 f = open(image01, ‘rb‘) # 参数images:图像base64编码 img1 = base64.b64encode(f.read()) # 二进制方式打开图文件 f = open(image02, ‘rb‘) # 参数images:图像base64编码 img2 = base64.b64encode(f.read()) # 参数images:图像base64编码,多张图片半角逗号分隔 params = { "images": img1 + ‘,‘ + img2} params = urllib.urlencode(params) access_token = ‘24.1a060b87a0dfcab77317999d.25922220.1505832798.282335-10029360‘ matchUrl = matchUrl + "?access_token=" + access_token request = urllib2.Request(url=matchUrl, data=params) request.add_header(‘Content-Type‘, ‘application/x-www-form-urlencoded‘) response = urllib2.urlopen(request) content = response.read() if content: content = json.loads(content) similar=content[‘result‘][0][‘score‘] return similar #if similar >80: #print "两张图片的相似度为"+str(similar)+" 很有可以能是同一个人" # return similar #else: # #print "两张图片的相似度为:"+str(content[‘result‘][0][‘score‘]) # return similar def compare(): similarlist=[] similardict={} for img in listdir(‘./star/‘): similarvalue=facecompar(‘compar.jpg‘,‘./star/‘+img) similarlist.append(similarvalue) similardict[similarvalue]=img return similarlist,similardict if __name__=="__main__": similarlist,similardict=compare() similarkey=sorted(similarlist)[-1] starname=similardict[similarkey] conn = conmysql() cur = conn.cursor() sql="select * from face where iamge=‘%s‘" % starname cur.execute(sql) results = cur.fetchall() print "一共对数据库进行比对了"+str(len(similarlist))+"条信息" for info in results: print "匹配到明星的信息:"+ info[0],info[1],info[2],"相似度:"+str(similarkey) conn.close()
测试图片:
因为她是我高中的时候喜欢过的明星,所以~~~~
明星数据库:
因为只是先把路走通,所以数据很少。
明星的照片所在目录:
明星照片:
程序运行效果:
一共对数据库进行比对了5条信息
匹配到明星的信息:曾轶可 27 1990年1月3日出生于湖南省常德市汉寿县,创作型女歌手,演员。 相似度:63.689125061
需要改进的:
01、数据量太少
02、程序太丑
本文出自 “付炜超” 博客,谢绝转载!
以上是关于互联网之无所遁形!的主要内容,如果未能解决你的问题,请参考以下文章