科技告诉你,你和女神有多像——Python人脸对比

引言

两个人在一起久了,由于环境因素,行为习惯,无意识的模仿对方,两个人就会越来越像,这个程序就会告诉你,你和你的女神有多像。
也可以测一下自己和自己心里最深处的那个人有多像,科技告诉你,ta是不是你的菜。

实现原理

百度AI

网站:https://ai.baidu.com

点击控制台,登录百度账号,进入控制台,进入人脸识别。

温馨提示:账号与百度搜索、百度贴吧、百度云盘、百度知道、百度文库等产品账号通用。

在这里插入图片描述
在这里插入图片描述
进入创建应用后,按照里面的步骤,创建一个人脸识别的应用。

查看人脸对比API文档

网站:https://cloud.baidu.com/doc/FACE/s/Lk37c1tpf

向API服务地址使用POST发送请求,必须在URL中带上参数access_token。需要自行获取Access Token,Access Token可通过应用的API Key和Secret Key生成。对官方文档做个更改,更改过后access_token直接输出的就是所需要的access_token的值。

 # encoding:utf-8
import requests 
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
    access_token = response.json()['access_token']
    print(access_token)

注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新access_token。

API中获取access_token的代码做了一些修改,使各位阅读者更快的获取到access_token的值

Python代码

可视化窗口代码

注释可以说很全面了。

from tkinter import *
root=Tk()   # 实例化一个Tk
root.title ('人脸相似度对比')    # 设置窗体的标题栏
root.geometry('400x270+550+300')   #设置窗口的大小及初始位置
label_1=Label(root, text='路径1:', font=('宋体',20))   #设置label键,显示文本
label_1.grid(row=0,column=0)     #label位置
entry_1=Entry(root,font=('宋体',20))    #单行文本框,输入路径
entry_1.grid(row=0,column=1)     #确定文本框位置
label_2=Label(root, text='路径2:', font=('宋体',20))
label_2.grid(row=1,column=0)
entry_2=Entry(root,font=('宋体',20))
entry_2.grid(row=1,column=1)
text = Text(root,width=55, height=6,font=('宋体',10))   #多行文本框,放置注意事项
text.insert("insert","注意事项:"+"\r\n"+"路径格式:D:\pycharm\picture\XXX.jpg"+"\r\n"+"路径1:已知图片*_*_*路径2:需要对比的图片"+"\r\n"+"路径1与路径2图片路径可以互换*_*哈哈哈"+"\r\n"+"路径最好手动打出并且不能出现python内置函数,例如:反斜杠t、反斜杠1、反斜杠User,为什么不能出现反斜杠User我也不知道。")
text.grid(row=2,columnspan=2)
button=Button(root,text='对  比',font=('宋体',20),command =change)   #按钮
button.grid(row=3,column=0,sticky=W)
button1=Button(root,text='退  出',font=('宋体',20),command=root.quit)
button1.grid(row=3,column=1,sticky=E)
text = Listbox(root, font=('楷书', 16), width=35, heigh=3)   #显示输出结果
# 定位 columnspan 组件横跨的列数
text.grid(row=4, columnspan=2)
root.mainloop()   #进入消息循环,必不可少

运行代码后,就构建出这样的窗口。
在这里插入图片描述

路径转换代码

def change():
    picture_1 = entry_1.get()   #从可视化代码的单行文本框获取路径信息
    path_1 = picture_1.replace('\\', '/')   #将"D:\pycharm\study\ceshi.jpg"中的'\'装换成'/'
    picture_2 = entry_2.get()
    path_2 = picture_2.replace('\\', '/')
    #异常处理,当路径中出现python关键字时可能无法转换
    try:
        img_base(path_1,path_2)  
    except:
        text.insert(END, '路径格式错误,请按注意事项检查。')  
        # 文本框滚动
        text.see(END)
        # 更新
        text.update()

源代码

GitHub地址:https://github.com/i7366464/python/blob/face_compare/face_compare3.0.py
百度网盘:链接:https://pan.baidu.com/s/1qBKyI9x1l1kBTdvHr_7eRg
提取码:9gxs
百度网盘中提供普通版本。。

效果

路径格式正确运行结果

在这里插入图片描述

路径格式错误输出结果

在这里插入图片描述

结语

代码中只进行了一种异常的处理,就是python无法将输入路径转换为python可识别路径的地异常。代码编写的比较理想化,就是路径所指向的图片中一定有人脸,但是事实不一定如此,可能画质较低,无法识别到人脸或者根本没有人脸,这种异常并未进行异常处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值