Python颜值测试器 测试你与女神的颜值差距
Hello大家好,我是你们的朋友JamesBin,现在很多拍照软件都有颜值测试及年龄识别功能,经过研究,发现 Python 也能实现,今天主要用 PyQt4 做个可视化工具,然后调用百度人脸识别api,识别出人脸的性别、年龄及颜值,下面一起来看看怎么实现的吧!
作者 | PK哥
来源 | Python知识圈
![](/assets/blank.gif)
☞☞☞点击查看更多优秀Python博客☜☜☜
B站上的Python学习资源
- 第一步:创建工具主窗口
- 第二步:以网格布局方式放控件
- 1、用QTextBrowser创建选择图片、浏览标签
- 2、放置性别、年龄、颜值标签
- 3、绑定“浏览”、“开始分析”信号槽。
- 4、进入百度云人脸识别控制台
- 5、创建人脸识别应用
- 6、创建成功后获得API key和Secret Key
- 7、获取调用接口所需的Access Token
- 8、打开图片路径,并转成BASE64格式
- 9、构造识图请求参数,获得返回结果
- 10、将返回结果放入上述文本显示框内
- 第三步:效果展示
第一步:创建工具主窗口
PyQt5创建主窗口有其固定的套路,首先要创建应用程序对象:app=QApplication(sys.argv),参数sys.argv是命令行参数,这使得可以在电脑系统终端执行程序时,传入命令参数,来执行不同的逻辑代码。执行应用程序对象,进入消息循环等待退出: sys.exit(app.exec_()),代码如下。
app = QApplication(sys.argv)
show = Window() # 主窗口的类
show.setFixedSize(500, 200)
show.show()
sys.exit(app.exec_())
其中, Window()是识别工具的类,窗口大小为 500X200
再为该窗口添加标题和图标
self.setWindowTitle("颜值识别工具")
self.setWindowIcon(QIcon('图标.jpg'))
效果如下:
第二步:以网格布局方式放控件
PyQt5有5种布局方式,分别是绝对布局、水平布局、垂直布局、网格布局和表单布局,本程序只采用网格布局,其余布局方式各有特点,感兴趣的朋友可以研究一下。
1、用QTextBrowser创建选择图片、浏览标签
分别为110x25和60x40大小,用QpushButton创建浏览、开始分析按钮,并绑定setBrowerPath和start函数(后续会提到),网格布局需要用到addWidget函数,它的4个参数分别代表放置的内容、放置行数、放置的列数、放的位置。
2、放置性别、年龄、颜值标签
分别放置在第 4、5、6 行的1和2列位置。
3、绑定“浏览”、“开始分析”信号槽。
首先是绑定“浏览”信号,先实例化QfileDialog,然后设置可以打开任何文件,接着设置文件过滤,选择接受选中文件的路径,默认为列表,再取出文件路径。
def setBrowerPath(self):dig=QFileDialog()dig.setFileMode(QFileDialog.AnyFile) # 设置可以打开任何文件dig.setFilter(QDir.Files) # 文件过滤if dig.exec_():# 接受选中文件的路径,默认为列表filenames = dig.selectedFiles()self.picfile=filenames[0] self.pathText.setText(self.picfile) # 列表中的第一个元素即是文件路径,以只读的方式打开文件
然后是绑定“开始分析”信号
4、进入百度云人脸识别控制台
https://console.bce.baidu.com/ai/?_=1528192333418&fromai=1#/ai/face/overview/index
没有账号的要注册的话
5、创建人脸识别应用
6、创建成功后获得API key和Secret Key
7、获取调用接口所需的Access Token
client_id = '' #API Key
client_secret = '' #Secret Key
url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={0}&client_secret={1}'.format(client_id,client_secret)data=requests.get(url, headers=header)access_token=json.loads(data.text)['access_token']
其中client_id是API_key的值,client_secret是Secret_Key的值,返回的access_token用于人脸调用接口进行人脸识别。
8、打开图片路径,并转成BASE64格式
9、构造识图请求参数,获得返回结果
params = {'image': img,'image_type': 'BASE64','face_field': 'age,beauty,gender,face_type,face_shape,expression,landmark'}url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token={0}'.format(get_access_token())
results = requests.post(url, data=params, headers=header)
results = json.loads(results.text)
Img是图片信息,image_type是图片格式,face_field是返回的识别信息,包括年龄、颜值、性别等信息,我们只取颜值、性别、年龄3类信息。
10、将返回结果放入上述文本显示框内
第三步:效果展示
用我自己的照片和女神迪丽热巴的照片比较一下
在这里插入图片描述
女神果然是女神,虽然我平时也以帅哥自称,但是在真正的实力派面前还是有差距的啊!
源码(或阅读原文):https://github.com/Brucepk/tools_face
有了它,终于知道自己和女神的颜值差距有多大,心里有b数了!
Python颜值测试器 测试你与女神的颜值差距相关推荐
- 【案例演练】测试器与模板继承
测试器 测试器即对文件内变量名.变量类型等文件进行判断 语法 {% if 判断条件 %}...代码块... {% elif 判断条件 %}...代码块... {% else %}...代码块... { ...
- 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器
相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...
- python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...
Python编写渗透测试探测工具 小编给大家推荐一个学习氛围超好的地方,Python学业交流:103456743!四千多小伙伴了吧!所以看到了快点进来吧,不然就满了!里面资料都是大家贡献的,几百个G了 ...
- 卧槽!我用Python做一个打字测试器!看看谁是最快的男人!
对于平时经常使用电脑的小伙伴而言,一个必不可少的操作就是利用键盘进行打字的操作,想必大家对自己的打字速度也是非常的自信,但是具体的速度大家却不能够准确表述. 今天,小编就同大家利用python制作一款 ...
- python 基于Tkinter的姻缘测试器
前期吐槽: 还记得8年前,大概是八年级的时候,那时候自己很帅.. <名字打架>这款小游戏还是挺火的.. 突然想起来,就用Tkinter做了个..类似的..很挫,不过编程,就是自由,想怎么编 ...
- 颜值测试软件99分,颜值测试软件(超准的颜值打分器)
颜值测试软件--颜值app,网络上很多网友都说范爷的颜值已经爆表了,嘴.鼻.眼都是黄金分割比例,那么范爷的颜值到底是多少呢?这款颜值测试软件--颜值app. 星云颜值app,星云颜值app是一款手机颜 ...
- python颜值打分器--你的长相能打几分
特此声明:本模型仅供娱乐,大家慎重使用(尤其是不要轻易给女朋友用),本编辑部对后果概不负责 记得2019年的时候,我无意间看到了华南理工大学的颜值评估的数据集.顿时就手痒了,于是做了一个基于深度学习的 ...
- python神经网络:女生颜值打分器(一)
python讨论qq群:996113038 导语: 前几天写了一个批量下载"小姐姐"图片的爬虫,阅读量还挺高的.本来想多写一些这种类型的文章.毕竟学程序的男生比较多,都喜欢看与妹子 ...
- Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT
" 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...
最新文章
- Linux Kernel TCP/IP Stack — L3 Layer
- 【FFmpeg】FFmpeg 相关术语简介 二
- 定积分证明题例题_第二十天(20,11,27):积分中值定理
- C++ 简单实现基数排序(list容器)
- PS长阴影生成工具 Long_Shadow_Generator_v1.2_for_CS6.zxp
- 转载:EditPlus下载安装及使用
- Matplotlib学习笔记——画三维图
- vue实现农历日期选择器
- Android-java.net.SocketException: Socket closed问题
- Mars3D中模型加载慢的优化办法
- vue使用html2canvas jspdf实现pdf下载导出功能
- 教你如何从小白开始,一步步从千氪财经上赚到第一桶金
- Django+Vue实现增删改查操作
- 使用 var 关键字在 Java 中使用动态类型
- 应用金数据在线订单功能 为中小企业带来真正价值
- oracle16c,Oracle兵器谱上古神器之-KFED
- 码分多址(CDMA)的本质-正交之美
- 微信拼手气红包C语言,微信拼手气红包背后的算法逻辑
- 软件工程全面质量管理的思想体系
- DevExpress换肤