欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

明星专家系统的 Python 实现:自动人脸识别比较

最编程 2024-04-01 22:43:58
...

python实现明星专家系统:人脸识别自动比对_Python

其实一直对电影里面的对×××进行人脸匹配然后,刷出来×××信息很感兴趣,今天晚上一时兴起,就搞了一把小的。

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

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

思路:

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

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

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

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

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

直接上代码:


# 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()

上一篇: 如何在 Verilog 和 VHDL 之间快速互换

下一篇: 磷酸铁锂离子动力电池内阻与放电倍率关系的研究

推荐阅读