Hello大家好,我是你们的朋友JamesBin,现在很多拍照软件都有颜值测试及年龄识别功能,经过研究,发现 Python 也能实现,今天主要用 PyQt4 做个可视化工具,然后调用百度人脸识别api,识别出人脸的性别、年龄及颜值,下面一起来看看怎么实现的吧!
作者 | PK哥
来源 | Python知识圈

☞☞☞点击查看更多优秀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颜值测试器 测试你与女神的颜值差距相关推荐

  1. 【案例演练】测试器与模板继承

    测试器 测试器即对文件内变量名.变量类型等文件进行判断 语法 {% if 判断条件 %}...代码块... {% elif 判断条件 %}...代码块... {% else %}...代码块... { ...

  2. 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

    相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...

  3. python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...

    Python编写渗透测试探测工具 小编给大家推荐一个学习氛围超好的地方,Python学业交流:103456743!四千多小伙伴了吧!所以看到了快点进来吧,不然就满了!里面资料都是大家贡献的,几百个G了 ...

  4. 卧槽!我用Python做一个打字测试器!看看谁是最快的男人!

    对于平时经常使用电脑的小伙伴而言,一个必不可少的操作就是利用键盘进行打字的操作,想必大家对自己的打字速度也是非常的自信,但是具体的速度大家却不能够准确表述. 今天,小编就同大家利用python制作一款 ...

  5. python 基于Tkinter的姻缘测试器

    前期吐槽: 还记得8年前,大概是八年级的时候,那时候自己很帅.. <名字打架>这款小游戏还是挺火的.. 突然想起来,就用Tkinter做了个..类似的..很挫,不过编程,就是自由,想怎么编 ...

  6. 颜值测试软件99分,颜值测试软件(超准的颜值打分器)

    颜值测试软件--颜值app,网络上很多网友都说范爷的颜值已经爆表了,嘴.鼻.眼都是黄金分割比例,那么范爷的颜值到底是多少呢?这款颜值测试软件--颜值app. 星云颜值app,星云颜值app是一款手机颜 ...

  7. python颜值打分器--你的长相能打几分

    特此声明:本模型仅供娱乐,大家慎重使用(尤其是不要轻易给女朋友用),本编辑部对后果概不负责 记得2019年的时候,我无意间看到了华南理工大学的颜值评估的数据集.顿时就手痒了,于是做了一个基于深度学习的 ...

  8. python神经网络:女生颜值打分器(一)

    python讨论qq群:996113038 导语: 前几天写了一个批量下载"小姐姐"图片的爬虫,阅读量还挺高的.本来想多写一些这种类型的文章.毕竟学程序的男生比较多,都喜欢看与妹子 ...

  9. Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT

     " 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...

最新文章

  1. Linux Kernel TCP/IP Stack — L3 Layer
  2. 【FFmpeg】FFmpeg 相关术语简介 二
  3. 定积分证明题例题_第二十天(20,11,27):积分中值定理
  4. C++ 简单实现基数排序(list容器)
  5. PS长阴影生成工具 Long_Shadow_Generator_v1.2_for_CS6.zxp
  6. 转载:EditPlus下载安装及使用
  7. Matplotlib学习笔记——画三维图
  8. vue实现农历日期选择器
  9. Android-java.net.SocketException: Socket closed问题
  10. Mars3D中模型加载慢的优化办法
  11. vue使用html2canvas jspdf实现pdf下载导出功能
  12. 教你如何从小白开始,一步步从千氪财经上赚到第一桶金
  13. Django+Vue实现增删改查操作
  14. 使用 var 关键字在 Java 中使用动态类型
  15. 应用金数据在线订单功能 为中小企业带来真正价值
  16. oracle16c,Oracle兵器谱上古神器之-KFED
  17. 码分多址(CDMA)的本质-正交之美
  18. 微信拼手气红包C语言,微信拼手气红包背后的算法逻辑
  19. 软件工程全面质量管理的思想体系
  20. DevExpress换肤

热门文章

  1. base64图片 类型
  2. 荣耀官网鸿蒙,荣耀继续使用鸿蒙?最缺一部价格合理的旗舰机!
  3. golang判断字串是英文
  4. 国内的创业媒体36kr环境窥探
  5. 通过GDK8观察ARM框架下的中断向量表
  6. Nginx开启gzip压缩配置参数
  7. matlab中sumf,sum函数(sum公式使用方法)
  8. [Codeforces939E][三分法]Maximize!
  9. 2023年10个最适合外贸网站的WordPress主题推荐
  10. Regex Golf 正则表达式练习(持续更新)