用 Python 计算 小姐姐颜值!

现在很多拍照软件都有颜值测试及年龄识别功能,经过研究,发现 Python 也能实现。

 

今天主要用 PyQt4 做个可视化工具,然后调用百度人脸识别api,识别出人脸的性别、年龄及颜值,下面一起来看看怎么实现的吧!

 

第一步:创建工具主窗口

 

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)        # 列表中的第一个元素即是文件路径,以只读的方式打开文件

 

然后是绑定“开始分析”信号

 

1.进入百度云人脸识别控制台

https://console.bce.baidu.com/ai/?_=1528192333418&fromai=1#/ai/face/overview/index

 

没有账号的要注册的话

 

2.创建人脸识别应用

 

 

3.创建成功后获得API key和Secret Key

 

 

4.获取调用接口所需的Access Token

client_id = '' #API Keyclient_secret = '' #Secret Keyurl='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_idAPI_key的值,client_secret是Secret_Key的值,返回的access_token用于人脸调用接口进行人脸识别。

 

5.打开图片路径,并转成BASE64格式

 

 

 

 

6.构造识图请求参数,获得返回结果

 

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类信息。


7.将返回结果放入上述文本显示框内

 

第三步:效果展示

 

用我自己的照片和女神迪丽热巴的照片比较一下


想看效果就加群领取源码:1136192749

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值