51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2982|回复: 0
打印 上一主题 下一主题

[转贴] 用 Python 写一个颜值测试小工具

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-8-17 15:02:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
           我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具。
      简介:要实现颜值测试功能,大致有两种方式:一种是自己编写检测功能,另一种是借助第三方接口来实现检测功能,比如:百度云接口,为了方便,本文我们采用百度云接口,接口的注册这里就不说了,如果不太清楚注册流程的话,可以参考一下我之前写的车牌识别这篇文章:https://blog.csdn.net/ityard/article/details/105673451
      我们需要用到的 Python 库主要包括:pillow、baidu-aip、tkinter,安装使用 pip install pillow/baidu-aip/tkinter 即可。
      实现
      首先,我们来看一下如何利用照片通过百度云接口获取性别、年龄、颜值信息,代码实现如下所示:
    1. APP_ID = '自己的APP_ID'
    2.   API_KEY = '自己的API_KEY'
    3.   SECRET_KEY = '自己的SECRET_KEY'
    4.   face = AipFace(APP_ID, API_KEY, SECRET_KEY)
    5.   image_type = 'BASE64'
    6.   options = {'face_field': 'age,gender,beauty'}
    7.   def get_file_base64(file_path):
    8.   with open(file_path, 'rb') as fr:
    9.   content = base64.b64encode(fr.read())
    10.   return content.decode('utf8')
    11.   def get_score(file_path):
    12.   # 脸部识别分数
    13.   result = face.detect(get_file_base64(file_path), image_type, options)
    14.   # print(result)
    15.   age = result['result']['face_list'][0]['age']
    16.   beauty = result['result']['face_list'][0]['beauty']
    17.   gender = result['result']['face_list'][0]['gender']['type']
    18.   return age, beauty, gender
    复制代码
          这里我们使用 tkinter 创建 GUI 来进行照片选取和接口调用的操作,下面看一下代码的主要实现。
      首先,我们创建一个窗口,代码实现如下:

    1. root = tk.Tk()
    2.   # 设置窗口大小
    3.   root.geometry('700x450')
    4.   # 为窗口添加标题
    5.   root.title('颜值测试工具')
    6.   # 设置背景色
    7.   canvas = tk.Canvas(root,
    8.   width=700,
    9.   height=450,
    10.   bg='#EEE8AA')
    11.   canvas.pack()
    复制代码
             我们接着向窗口中添加两个按钮,一个用来选择照片,另一个用来调用接口,代码实现如下:
    1. # 照片选择按钮
    2.   tk.Button(self.root, text='选择照片', font=('华文行楷', 16), command=self.show_img).place(x=40, y=180)
    3.   # 颜值测试按钮
    4.   tk.Button(self.root, text='查看颜值', font=('华文行楷', 16), command=self.set_score).place(x=40, y=280)
    复制代码
            我们还需要创建三个输入框来显示接口返回的性别、年龄和颜值信息,代码实现如下:
    1. tk.Label(self.root, text='性别', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=150)
    2.   self.text1 = tk.Text(self.root, width=10, height=2)
    3.   tk.Label(self.root, text='年龄', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=260)
    4.   self.text2 = tk.Text(self.root, width=10, height=2)
    5.   tk.Label(self.root, text='颜值', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=360)
    6.   self.text3 = tk.Text(self.root, width=10, height=2)
    7.   # 填装文字
    8.   self.text1.place(x=580, y=150)
    9.   self.text2.place(x=580, y=260)
    10.   self.text3.place(x=580, y=360)
    复制代码
    作者:野客   来源:思否


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 14:04 , Processed in 0.073078 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表