其实我一直在电影里对×××做人脸比对,然后对×××的信息很感兴趣,所以就在某某上做了今晚心血来潮放小的。理论上:你可以建立一个你感兴趣的百万级数据库。给你一张照片,你就可以知道她是谁,她在哪里,所有的信息都可以知道,而且因为人与人之间的网络连接,你甚至可以知道她喜欢谁,她男朋友长什么样。相信我:一切都不是虚构的,你可以做得更多!思路:1、对于数据采集,可以利用爬虫有针对性地爬取互联网上的明星信息。2.格式化数据,存入mysq,数据库存入明星自拍的文件名。3.使用百度的api来写程序,说实话,百度的人脸识别很不错,准确率很高。5.输出匹配到的人的信息和相似度值。直接上传代码:#encoding:utf-8`importbase64importurllibimporturllib2importsimplejsonasjsonfromosimportlistdirimportMySQLdbimportsysreload(sys)sys.setdefaultencoding('utf-8')defconmysql():conn=MySQLdb.connect(host='localhost',port=3306,user='root',passwd='123456',db='xxnlove',charset='utf8')#cur=conn.cursor()returnconn'''人脸对比界面'''deffacecompar(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.1505832735.28210029360'matchUrl=matchUrl+"?access_token="+access_tokenrequest=urllib2.Request(url=matchUrl,data=params)request.add_header('Content-Type','application/x-www-form-urlencoded')response=urllib2.urlopen(request)内容=response.read()ifcontent:content=json.loads(content)similar=content['result'][0]['score']returnsimilar#ifsimilar>80:#print"两张图片的相似度"+str(similar)+"很有可能是同一个人"#returnsimilar#else:##print"两张图片的相似度为:"+str(content['result'][0]['score'])#returnsimilardefcompare():similarlist=[]similardict={}forimginlistdir('./star/'):similarvalue=facecompar('compar.jpg','./star/'+img)similarlist.append(similarvalue)similardict[similarvalue]=imgreturnsimilarlist,similardictif__name__=="__main__":similarlist,similardict=compare()similarkey=sorted(similarlist)[-1]starname=similardict[similarkey]连接=conmysql()cur=conn.cursor()sql="select*fromfacewhereiamge='%s'"%starnamecur.execute(sql)results=cur.fetchall()print"数据库已经比较"+str(len(similarlist))+"信息片段"forinfoinresults:print"Informationmatchedtostars:"+info[0],info[1],info[2],"Similarity:"+str(similarkey)conn.close()testimage:ZengYike.jpg因为她是我高中时喜欢的明星,所以~名人数据库:因为我只是先开道,所以数据很少名人照片目录:名人照片:程序运行效果:一共对比了5条信息到数据库。匹配明星信息:曾轶可,1990年1月3日出生于湖南省常德市汉寿县,女创作歌手、演员。相似度:63.689125061优化后的:#encoding:utf-8`importbase64importurllibimporturllib2importsimplejsonasjsonfromosimportlistdirimportMySQLdbimportsysreload(sys)sys.setdefaultencoding('utf-8')importrequestsfrombs4importBeautifulSoupimportredefconmysql():conn=MySQLdb.connect(host='localhost',port=3306,user='root',passwd='123456',db='xxnlove',charset='utf8')#cur=conn.cursor()返回conndefcrawling(name):url="http://baike.baidu.com/search/word?word='%s'"%nameresponse=requests.get(url)response.encoding='utf-8'text=response.textsoup=BeautifulSoup(text,'lxml')forinforinsoup.find_all('meta')[3:4]:全局信息information=(infor.get('content'))returninformationdeffacecrawling(name):url="http://baike.baidu.com/search/word?word='%s'"%nameresponse=requests.get(url)response.encoding='utf-8'text=response.textsoup=BeautifulSoup(text,'lxml')imgurl=soup.img.get('src')尝试:response=requests.get('%s'%imgurl)open('./star/'+name+'.jpg','wb').write(response.content)except:print"Continue"'''人脸比对界面'''deffacecompar(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编码,多张图片一分为二-widthcommasparams={"images":img1+','+img2}params=urllib.urlencode(params)access_token='24.1fba688d5a060b87a0dfcab7731.2592000.1505832798.282335-100360'matchUrl"=accessUrken++access_tokenrequest=urllib2.Request(url=matchUrl,data=params)request.add_header('Content-Type','application/x-www-form-urlencoded')响应se=urllib2.urlopen(request)content=response.read()ifcontent:content=json.loads(content)try:similar=content['result'][0]['score']returnsimilarexcept:printimage02+"照片对比有问题"#ifsimilar>80:#print"两张图片的相似度为"+str(similar)+"很有可能是同一个人"#returnsimilar#else:##print"两张图片的相似度为:"+str(content['result'][0]['score'])#returnsimilardefcompare():similarlist=[]similardict={}forimginlistdir('./star/'):similarvalue=facecompar('compar.jpg','./star/'+img)similarlist.append(similarvalue)similardict[similarvalue]=imgreturnsimilarlist,similardictdefstardb():starstr="邢家栋李学清高昊潘粤明戴俊薛志谦贾宏生于博杰李王班兰玉刘恩佑任权李光洁蒋文黑龙张殿飞邓超张杰杨坤沙易丽毛黄雷于晓薇刘冠祥秦张俊杰enKun黄觉少峰陈旭马天宇杨子邓安琪赵鸿飞Marco黄海波黄志中李陈王婷何炅朱亚文胡军徐亚军张涵予贾乃亮卢虎隐晓天于和伟田亮夏宇李亚鹏胡兵王瑞宝剑锋于震觉醒胡夏张丰毅刘翔李玉刚LinYilunYuanHongZhuYuchenDingZhichengHuangZhengZhangZijianXuSongXiangdingLuYiQiaoZhenyuYanSuLiJianWangXiaokunHuGeJijieWuJunyuHanHanHuangHaibingWeiChenGuoJingmingHeShengmingWuDiwenXieMiaoZhengYuanHuanziArticleChenXiangjingBoranZuoXiaozuCurseSmilingLiYongXuYutengDuanYihongLiWeiLuoZhongxuZhangYuan,LiLi,ShiXiaolong,DazuoJun,MaoNing,FanZhouwei,YuRongguang,TangChao,ZhangXiaochen,WuJingshanye,ChenLong,HouYong,ZhangGuoqiang,CornTiZhou,ZhangDanfeng,YuSiyuan,YaoMing,FengShaofeng,ChenYujian,WuJianfei,ZhengJun,HuYanbin,LiZhinan,QianFeng,GaoShuguang,XieHexian,ChenDaoming,LiuYunlong,WangFeng,ChenChusheng,ChenSicheng,WeiChen,MaXueyang,YuanChengjie,CuiJian,DuChunlinShenLiuzhouchengHuangXiaomingLiuYeZhangHanYangYangSongXiaoboJieXiaodongDouWeiJiangWuChenZeyuPengTanZhangYishanLiYifengYanKuanDongLaiDongZhangGuoliWangZhiwenTongDaweiBaiXuxuPuBaJiaLingXiaosuLiXingliangMaoFangyuanZhangJiayiDaZhangWeiShiYangLiYoubinZhangLeiZhuZixiaoMartialArtsYangJunyiGengLeQianYongchenSaBeiningXuZhengTanJiexiHuangShengshengHaiMingweiWangHanWangXuebingJiaYipingSunHongleiYuanWenkangCaiGuoqingWuXiuboWangYueXinAnhuLiuXinYuHaomingZhangChaoYuXiaotongZhangJunningQiaoRenLiangPushuZhaoFanZhangYiNieYuanZhangJingxuanFuXinboHuangMingDuHaitaoLiYuchunJaneZhangZhouBichangHeJieLiuYifeiZhangHanyunChenHaoshangWenjieTangWeiZhangXiaoyuHanXueSunFeifeiZhangJianiHuoSiyanChenZihanZhuYaqiongJiangYiyanLiNaXuFeiHuLinghaoLiuLiyangrebornZhangZiyiTanWeiweiWeiJiaqingZhangYafeiLiXudanSunYixinGongHeAimengMengRunniWangRongTangJialiTangFangNiuMengmengFanBingbingZhaoWeiZhouXunJinshaJiMinjiaHuangYaliYeYiqianMaSuAsangJinMingXuXingYaoDiZhuYanXiaYingChenXibeiFengJiameiGaoYayuan,LinShuang,ZhengJingwen,TaoHong,XuJinglei,HuangYi,DongJie,GongLi,GaoYuanyuan,YuNa,MengGuangmei,Gameapple,BeautyFengfeng,Xiaolongnv,Tongtong,ZhangZixuan,FruitDing,Baili,Blood-suckingBarbie,BusMM,Xiangxiang,DuanSisi,FebruaryGirl,LiuYuqi,dodolook,LalaPrincess,ShenLijun,ZhouJingxin,DingDing,XieYawen,ChenJiaqi,SongLin,GuoHuimin,LuJieyun,SheManniHuangJingMaYanliJiangWenliTranquilityXuQingZhangJingchuQuYingZhangYanSunLiMinChunxiaoCaiFeiyuWuZhuoxiYouHongmingHuYuweiZhangZhenyueTangZhenyeHuangLixingMiaoQiaoweiZhouXingchiWenShenghaoXiaoJingtengDouZhikongChenHandianZhengEkinChenGuokunZhangXinzheFanYichenWangShaoweichenYiruZhangWeijianZhouTangHaoJackieLinJimmySuYoupengWenZhaolunWuJianhaoHuangJiajuLuGuangzhongLinWenlongZhaoYoutingAndyLauZhouChuanxiongLiZhitingZhouHuajianZhongZhentaoZhouVicPugGangWuZunLeslieCheungFangDatongLiuSongrenZhengJiayingZhouPakhaoWangZulanGuJujiXiaoZhengnanZouZhaolongLiMingshunWuQilongJinchengWuLiShengjieChenJianzhouYuWenleLuoZhixiangWuQihuaLiHackenQinHanShanLiwenWangDongchengMoShaocongHuangQiushengLuoJialiangOdiMaGuomingFanZhiweiRuanJingtianZhengZhongjiZhangZhilinMakJunxiGuilunMagnesiumLinYichenChenQiaoenLiangJingruCaiShiyunFanWeiqiLiaoBierCeciliaCheungCainiYangLiLizhenQiQiTianxinRenHongxiuYangSiminGuoJingchunZhongLitiSunYanziYeYuqingWengHongQiuShuzhenCaiShuzhenGigiLeungJiqinShuQiMoWenweiDaiPennyLiuRuoyingYangQianhuaFanWeiqiXuXidiChenBaolianWuChenjunZhangTinglinJiaxinYuFeihongYeZizhouHaimeiYiNengjingHoneyVickiHouXiangtingHebeYingCaierXuRuyunWuPeiciZhengXiyiFanWenfangLiCaihuaCaiChunjiabenRuRuFanXiaoxuanZhangHuimeiLinYilianCaringYanZhuoYitingYangGongruChenWenyuanWuXiaoliMeiYanfangLinQingxiaZhaoYazhiMengTingweiWuQianlianChenHuishanXuHuixinLiZiZhouHuiminZhongChuhongCaiQinQiyuDengLijunLinFengjiaoChenYulianZhouBingqianYangHuishanJinSumeiWengMeilingGaoShengmeiZhenniHuHuizhongKuangMeiyunYuXiaofanLuXiufangLiuXuehuaPanYingziLiangYanlingWangMingquanSuRuiFengBaobaoLizhiZhangAijiaYeQianwenFengFeifeiYuKexin"starslist=starstr.split()forstarinstarslist:inform=crawling(star)facecrawling(star)try:conn=conmysql()cur=conn.cursor()image=star+'.jpg'sql="插入星号值(%s,%s,%s)"cur.execute(sql,(star,inform,image))cur.close()conn.commit()conn.close()最后:打印“connitue”importtimetime.sleep(1.5)if__name__=="__main__":similarlist,similardict=compare()similarkey=sorted(similarlist)[-1]starname=similardict[similarkey]conn=conmysql()cur=conn.cursor()sql="select*fromfacewhereiamge='%s'"%starnamecur.execute复制代码(sql)results=cur.fetchall()print"数据库比较总数"+str(len(similarlist))+"条信息"forinfoinresults:print"匹配的星信息:"+info[0],info[1],info[2],"similarity:"+str(similarkey)conn.close()database:directory:项目概要:人脸比对对照片有一定的要求,因为我爬取的照片大小不规则,所以在比较的时候,就会出现问题。百度用于人脸比对的API接口,感觉关键部分没有自己实现,补充数据结构和算法。
