想要了解人工智能首先要知道“百度大脑”(https://ai.baidu.com/?track=cp:aipinzhuan|pf:pc|pp:AIpingtai|pu:title|ci:|kw:10005792),“百度大脑”是国内做人工智能比较前端的了,有很多功能都是开源的,我们这些小白可以直接拿来用。这篇主要说一下我自己学到的东西和后面做的一个小程序。

要点:

  1、需要在CMD中导入两个python第三方包【pip install pillow】、【pip install baidu-aip】

  2、需要自己注册一个百度账号API登录到百度大脑来获取下面小程序用的【AppID】、【API Key】、【Secret Key】

  3、百度搜索“百度大脑”进入首页→开放功能→(需要使用的模块,这里要用的是人脸识别)人脸识别→立即使用→创建应用(输入一些东西)   就创建完成了,上面会有要点2里所需要获取的三样东西

  

  4、返回到人脸识别首页,进入技术文档界面点击人脸识别模块点击SDK文档点击REST API SDK下面会有python SDK点击进去,这个上面都有用法就不多说了

  5、把上面的代码复制到pycharm新建的项目中代码如下:

  1. #小小小小小小小小小白出品
  2. #这个代码只显示了年龄、性别和颜值分数
  3. from aip import AipFace
  4. import base64
  5.  
  6. """ 你的 APPID AK SK """
  7. APP_ID = '你的APP_ID'
  8. API_KEY = '你的API_KEY'
  9. SECRET_KEY = '你的SECRET_KEY'
  10.  
  11. client = AipFace(APP_ID, API_KEY, SECRET_KEY)
  12.  
  13. image = 'dili.jpg'
  14. def set_image(file):
  15. with open(file, 'rb')as f:
  16. res = base64.b64encode(f.read())
  17. return res.decode('utf-8')
  18.  
  19. imageType = "BASE64"#需要将图片转换成BASE64类型
  20. # image = set_image('你需要用的图片')
  21. """ 调用人脸检测 """
  22. options = {'face_field': 'age,gender,beauty'}
  23.  
  24. """ 带参数调用人脸检测 """
  25. def face_score(image):
  26. results = client.detect(set_image(image), imageType, options)
  27. age = results['result']['face_list'][0]['age']
  28. gender = results['result']['face_list'][0]['gender']['type']
  29. beauty = results['result']['face_list'][0]['beauty']
  30.  
  31. return age,gender,beauty
  32. # print(results)
  33. print(face_score(image))

  6、再创建一个py文件,里面放的是小程序的代码,代码如下:

  1. """
  2. pip install pillow
  3. pip install baidu-aip
  4. pip install tkinter
  5. """
  6. import PIL
  7. import time
  8. import base64
  9. import tkinter as tk
  10. from PIL import Image
  11. from PIL import ImageTk
  12. from aip import AipFace
  13. from tkinter.filedialog import askopenfilename
  14.  
  15. # 配置百度aip参数
  16. APP_ID = '你的APP_ID'
  17. API_KEY = '你的API_KEY'
  18. SECRET_KEY = '你的SECRET_KEY'
  19. a_face = AipFace(APP_ID, API_KEY, SECRET_KEY)
  20. image_type = 'BASE64'
  21.  
  22. options = {'face_field': 'age,gender,beauty'}
  23.  
  24. def get_file_content(file_path):
  25. """获取文件内容"""
  26. with open(file_path, 'rb') as fr:
  27. content = base64.b64encode(fr.read())
  28.  
  29. return content.decode('utf8')
  30.  
  31. def face_score(file_path):
  32. """脸部识别分数"""
  33. result = a_face.detect(get_file_content(file_path), image_type, options)
  34. print(result)
  35. age = result['result']['face_list'][0]['age']
  36. beauty = result['result']['face_list'][0]['beauty']
  37. gender = result['result']['face_list'][0]['gender']['type']
  38.  
  39. return age, beauty, gender
  40.  
  41. class ScoreSystem():
  42. """打分系统类"""
  43. root = tk.Tk()
  44.  
  45. # 修改程序框的大小
  46. root.geometry('800x500')
  47.  
  48. # 添加程序框标题
  49. root.title('女神颜值打分系统')
  50.  
  51. # 修改背景色
  52. canvas = tk.Canvas(root,
  53. width=800, # 指定Canvas组件的宽度
  54. height=500, # 指定Canvas组件的高度
  55. bg='#E6E6FA') # 指定Canvas组件的背景色
  56. canvas.pack()
  57.  
  58. def start_interface(self):
  59. """主运行函数"""
  60. self.title()
  61. self.time_component()
  62.  
  63. # 打开本地文件
  64. tk.Button(self.root, text='打开文件', command=self.show_original_pic).place(x=50, y=150)
  65. # 进行颜值评分
  66. tk.Button(self.root, text='运行程序', command=self.open_files2).place(x=50, y=230)
  67. # 显示帮助文档
  68. tk.Button(self.root, text='帮助文档', command=self.show_help).place(x=50, y=310)
  69. # 退出系统
  70. tk.Button(self.root, text='退出软件', command=self.quit).place(x=50, y=390)
  71. # 显示图框标题
  72. tk.Label(self.root, text='原图', font=10).place(x=380, y=120)
  73. # 修改图片大小
  74. self.label_img_original = tk.Label(self.root)
  75. # 设置显示图框背景
  76. self.cv_orinial = tk.Canvas(self.root, bg='white', width=270, height=270)
  77. # 设置显示图框边框
  78. self.cv_orinial.create_rectangle(8, 8, 260, 260, width=1, outline='red')
  79. # 设置位置
  80. self.cv_orinial.place(x=265, y=150)
  81. # 显示图片位置
  82. self.label_img_original.place(x=265, y=150)
  83.  
  84. # 设置评分标签
  85. tk.Label(self.root, text='性别', font=10).place(x=680, y=150)
  86. self.text1 = tk.Text(self.root, width=10, height=2)
  87. tk.Label(self.root, text='年龄', font=10).place(x=680, y=250)
  88. self.text2 = tk.Text(self.root, width=10, height=2)
  89. tk.Label(self.root, text='评分', font=10).place(x=680, y=350)
  90. self.text3 = tk.Text(self.root, width=10, height=2)
  91.  
  92. # 填装文字
  93. self.text1.place(x=680, y=175)
  94. self.text2.place(x=680, y=285)
  95. self.text3.place(x=680, y=385)
  96.  
  97. # 开启循环
  98. self.root.mainloop()
  99.  
  100. def show_original_pic(self):
  101. """放入文件"""
  102. self.path_ = askopenfilename(title='选择文件')
  103. # 处理文件
  104. img = Image.open(fr'{self.path_}')
  105. img = img.resize((270, 270), PIL.Image.ANTIALIAS) # 调整图片大小至270*270
  106. # 生成tkinter图片对象
  107. img_png_original = ImageTk.PhotoImage(img)
  108. # 设置图片对象
  109. self.label_img_original.config(image=img_png_original)
  110. self.label_img_original.image = img_png_original
  111. self.cv_orinial.create_image(5, 5, anchor='nw', image=img_png_original)
  112.  
  113. def open_files2(self):
  114. # 获取百度API接口获得的年龄、分数、性别
  115. age, score, gender = face_score(self.path_)
  116.  
  117. # 清楚text文本框内容并进行插入
  118. self.text1.delete(1.0, tk.END)
  119. self.text1.tag_config('red', foreground='RED')
  120. self.text1.insert(tk.END, gender, 'red')
  121.  
  122. self.text2.delete(1.0, tk.END)
  123. self.text2.tag_config('red', foreground='RED')
  124. self.text2.insert(tk.END, age, 'red')
  125.  
  126. self.text3.delete(1.0, tk.END)
  127. self.text3.tag_config('red', foreground='RED')
  128. self.text3.insert(tk.END, score, 'red')
  129.  
  130. def show_help(self):
  131. """显示帮助"""
  132. pass
  133.  
  134. def quit(self):
  135. """退出"""
  136. self.root.quit()
  137.  
  138. def get_time(self, lb):
  139. """获取时间"""
  140. time_str = time.strftime("%Y-%m-%d %H:%M:%S") # 获取当前的时间并转化为字符串
  141. lb.configure(text=time_str) # 重新设置标签文本
  142. self.root.after(1000, self.get_time, lb) # 每隔1s调用函数 get_time自身获取时间
  143.  
  144. def time_component(self):
  145. """时间组件"""
  146. lb = tk.Label(self.root, text='', fg='blue', font=("黑体", 15))
  147. lb.place(relx=0.75, rely=0.90)
  148. self.get_time(lb)
  149.  
  150. def title(self):
  151. """标题设计"""
  152. lb = tk.Label(self.root, text='女神颜值打分系统',
  153. bg='#6495ED',
  154. fg='lightpink', font=('华文新魏', 32),
  155. width=20,
  156. height=2,
  157. # relief=tk.SUNKEN
  158. )
  159. lb.place(x=200, y=10)
  160.  
  161. score_system = ScoreSystem()
  162. score_system.start_interface()

  7、运行结果如下图

    这就是本篇我所说的内容,如果对你有帮助,点点支持,谢谢。

小白初入Python人工智能的更多相关文章

  1. 初入python

    初入python 一定要学好python 求1-100的和: i=1 s=0 while i<101: s=s+i i=i+1 print(s)

  2. 初入python 用户输入,if,(while 循环)

    python 基础 编译型: 一次性将所有程序编译成二进制文件. 缺点:开发效率低,不能跨平台 优点:运行速度快. :c ,c++语言 等等.... 解释行:当程序执行时,一行一行的解释. 优点:开发 ...

  3. python之初入Python

    python优缺点: Python的优点很多,简单的可以总结为以下几点. 简单和明确,做一件事只有一种方法. 学习曲线低,跟其他很多语言相比,Python更容易上手. 开放源代码,拥有强大的社区和生态 ...

  4. 初入python,与同学者的第一次见面(小激动)

    自2017来,接触python其实已经算是蛮久了,最苦的时光还是刚开始的时候,真的,我感觉编程就是一种感觉,有的时候就像找对象一样,感觉对了,怎么学都是带劲哈哈哈.在这个周围都在学习PHP的环境下,我 ...

  5. 初入Python继承

    1.什么是继承? 新类不用从头编写 新类从现有的类继承,就自动拥有了现有类的所有功能 新类只需要编写现有类缺少的新功能 2.继承的好处 复用已有代码 自动拥有了现有类的所有功能 只需要编写缺少的新功能 ...

  6. 【翻译】用AIML实现的Python人工智能聊天机器人

    前言 用python的AIML包很容易就能写一个人工智能聊天机器人. AIML是Artificial Intelligence Markup Language的简写, 但它只是一个简单的XML. 下面 ...

  7. 初入前端框架bootstrap--Web前端

    Bootstraps是一种简洁.直观.强悍的前端开发框架,它让web开发更迅速.简单.对于初入Bootstrap的小白,高效进入主题很重要,能为我们节省很多时间,下面我将对使用Bootstrap开发前 ...

  8. 初入pygame——贪吃蛇

    一.问题利用pygame进行游戏的编写,做一些简单的游戏比如贪吃蛇,连连看等,后期做完会把代码托管. 二.解决 1.环境配置 python提供一个pygame的库来进行游戏的编写.首先是安装pygam ...

  9. 初入TensorFlow————配置TensorFlow

    能看到这说明你对python已经有一定的了解了,因此很多基础直接跳过. 一.TensorFlow环境配置: TensorFlow的环境配置在网上很多的教程都是用anaconda的方式,但是很容易出现冲 ...

随机推荐

  1. JVM 调优 - jhat

    Java命令学习系列(五)——jhat 2016-01-21 分类:Java 阅读(8708) 评论(3) 阿里大牛珍藏架构资料,点击链接免费获取 jhat(Java Heap Analysis To ...

  2. 小鸟初学Shell编程(七)变量引用及作用范围

    变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...

  3. 12-z-index

    z-index 这个东西非常简单,它有四大特性,每个特性你记住了,页面布局就不会出现找不到盒子的情况. z-index 值表示谁压着谁,数值大的压盖住数值小的, 只有定位了的元素,才能有z-index ...

  4. 【百度地图】如何去掉百度LOGO

    只需要一步就解决问题,在CSS里加入一段代码即可: .anchorBL{display:none;}

  5. 从0开始学FreeRTOS-(创建任务)-2

    # 补充 开始今天的内容之前,先补充一下上篇文章[从单片机到操作系统-1](https://jiejietop.gitee.io/freertos-1/)的一点点遗漏的知识点. ```js BaseT ...

  6. 致所有.Net者和有梦想的朋友们 - 共勉

    这篇文章很早就想写的了,主要是人到了一定的年纪,就想唠叨一些看法,认不认可不重要,重要的是生活给予你的酸甜苦辣,你都想一吐为快. 这里主要基于多年来自己的一个行业感受和以及生活感想,唠叨一下工作以及生 ...

  7. 从一道ctf看php反序列化漏洞的应用场景

    目录 0x00 first 前几天joomla爆出个反序列化漏洞,原因是因为对序列化后的字符进行过滤,导致用户可控字符溢出,从而控制序列化内容,配合对象注入导致RCE.刚好今天刷CTF题时遇到了一个类 ...

  8. LeetCode_20-Valid Parentheses

    给定一个字符串,其中包含字符’(’,’)’,’[’,’]’,’{‘,’}’,左括号必须匹配右括号,一对匹配的括号不能单独出现单个左括号或者右括号.如:(()[])有效,[(])无效空字符串也算是有效的 ...

  9. 【NOIP2009】道路游戏

    Description 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 nn 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n ...

  10. LeetCode初级算法--数组01:只出现一次的数字

    LeetCode初级算法--数组01:只出现一次的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...