• 利用 Python 写一个颜值测试小工具


    我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具。

    很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:1097524789

    简介

    要实现颜值测试功能,大致有两种方式:一种是自己编写检测功能,另一种是借助第三方接口来实现检测功能,比如:百度云接口,为了方便,本文我们采用百度云接口,接口的注册这里就不说了,如果不太清楚注册流程的话,可以参考一下我之前写的车牌识别这篇文章: https://blog.csdn.net/ityard/article/details/105673451 。

    我们需要用到的 Python 库主要包括:pillow、baidu-aip、tkinter,安装使用 pip install pillow/baidu-aip/tkinter 即可。

    实现

    首先,我们来看一下如何利用照片通过百度云接口获取性别、年龄、颜值信息,代码实现如下所示:

    APP_ID = '自己的APP_ID'
    API_KEY = '自己的API_KEY'
    SECRET_KEY = '自己的SECRET_KEY'
    face = AipFace(APP_ID, API_KEY, SECRET_KEY)
    image_type = 'BASE64'
    options = {'face_field': 'age,gender,beauty'}
    
    def get_file_base64(file_path):
      with open(file_path, 'rb') as fr:
        content = base64.b64encode(fr.read())
        return content.decode('utf8')
    
    def get_score(file_path):
      # 脸部识别分数
      result = face.detect(get_file_base64(file_path), image_type, options)
      # print(result)
      age = result['result']['face_list'][0]['age']
      beauty = result['result']['face_list'][0]['beauty']
      gender = result['result']['face_list'][0]['gender']['type']
      return age, beauty, gender

    这里我们使用 tkinter 创建 GUI 来进行照片选取和接口调用的操作,下面看一下代码的主要实现。

    首先,我们创建一个窗口,代码实现如下:

    root = tk.Tk()
    # 设置窗口大小
    root.geometry('700x450')
    # 为窗口添加标题
    root.title('颜值测试工具')
    # 设置背景色
    canvas = tk.Canvas(root,
              width=700,
              height=450,
              bg='#EEE8AA')
    canvas.pack()

    我们接着向窗口中添加两个按钮,一个用来选择照片,另一个用来调用接口,代码实现如下:

    # 照片选择按钮
      tk.Button(self.root, text='选择照片', font=('华文行楷', 16), command=self.show_img).place(x=40, y=180)
      # 颜值测试按钮
      tk.Button(self.root, text='查看颜值', font=('华文行楷', 16), command=self.set_score).place(x=40, y=280)

    我们还需要创建三个输入框来显示接口返回的性别、年龄和颜值信息,代码实现如下:

    tk.Label(self.root, text='性别', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=150)
    self.text1 = tk.Text(self.root, width=10, height=2)
    tk.Label(self.root, text='年龄', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=260)
    self.text2 = tk.Text(self.root, width=10, height=2)
    tk.Label(self.root, text='颜值', bg='#EEE8AA', fg='#0AB0D5', font=('华文行楷', 20)).place(x=500, y=360)
    self.text3 = tk.Text(self.root, width=10, height=2)
    # 填装文字
    self.text1.place(x=580, y=150)
    self.text2.place(x=580, y=260)
    self.text3.place(x=580, y=360)

    看一下实现效果:

  • 相关阅读:
    android手机rootROM下载地址
    mysql alter 语句用法,添加、修改、删除字段等
    java比较两个日期大小
    eclipse设置全局编码为UTF-8的方法
    Spring MVC 异步处理请求,提高程序性能
    ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
    maven之发布项目到nexus【clean deploy命令】
    nexus-3本地下载jar的settipng.xml配置
    windows开启3306端口并用可视化工具访问远程mysql(授权访问)
    mysql 列转行,合并字段
  • 原文地址:https://www.cnblogs.com/shann001/p/13130290.html
Copyright © 2020-2023  润新知