功能需求
- 语音接入控制垃圾分类识别,并触发垃圾桶的开关盖
- 回顾二阶段的Socket编程,实现Sockect发送指令远程控制垃圾分类识别,并触发垃圾桶的开关盖
- 图像识别垃圾分类功能
- 语音播报垃圾物品类型
- OLED显示垃圾物品类型
- 根据垃圾类型开关不同类型垃圾桶
图像处理使用阿里SDK支持Python和Java接口,目的是引入C语言的Python调用,感受大厂做的算法bug
此接口是人工智能接口,阿里云识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴在常规嵌入式设备负责执行居多,
说白的嵌入式设备负责数据采集,然后转发给人工智能识别后,拿到结果进行执行器动作
1. Python的安装和环境搭建
环境搭建:(备注:在香橙派 3.0.6版本的镜像里已经默认自带了python3.10的版本,不需要安装,只需要后续安装下python3 dev即可,后续统一采用Orangepizero2_3.0.6_ubuntu_jammy_desktop_xfce_linux5.16.17的系统镜像)
1、查看当前Linux下自带的Python版本
python --version
2、更新Linux源
sudo apt update
3、安装Python所需要的环境-代码如下(通用代码:树莓派、全志、Linux均适用)
sudo apt install -y build-essential zlib1g-dev \
libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \
libreadline-dev libffi-dev curl libbz2-dev
4、载python3.9源码压缩包
wget \
https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
5、解压包
tar xvf Python-3.9.10.tgz
6、进入python文件操作-配置
./configure --enable-optimizations
7、查看创建好的Makefile文件
vi Makefile
8、编译(大概35分钟)
make -j4
9、安装
sudo make install
10、查看python安装路径
/usr/local/bin
11、可以查看到其他路径下的python版本
which python
12、可以将python2.7版本删除
sudo rm -f /usr/bin/python
13.建立一个软链接专门指向python3.9
sudo ln -s /usr/local/bin/python3.9 /usr/bin/python
14.更新源
sudo apt install -y python-pip python3-pip
15.更新源(返回主目录下再操作)
mkdir .pip 建立pip工作文件夹
cd .pip
vi pip.conf 添加 pip 服务器配置文件
内容如下:
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
我的python版本是Python 3.0以上的,所以需要使用python3 --version来查询版本号
2. Python的基础学习
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
系统学习Python3Python 基础教程 | 菜鸟教程 (runoob.com)]()Python3课程内容 地址如下:
2.1. Python的特点:
Python 是一种广泛使用的高级编程语言,以其简洁、易读和强大的功能而著称。以下是 Python 的一些主要特点:
- 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
- 易于阅读:Python代码定义的更清晰。
- 易于维护:Python的成功在于它的源代码是相当容易维护的。
- 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
- 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
- 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
- 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
- 数据库:Python提供所有主要的商业数据库的接口。
- GUI编程:Python支持GUI可以创建和移植到许多系统调用。
- 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
综上所述,Python 是一种功能强大、易于学习且应用广泛的编程语言,它的这些特点使得它成为许多程序员的首选语言。
2.2. 编写并运行第一个Python程序:
首先我们创建一个Python的文件夹,我们在这个文件夹下创建第一个python代码文件:hello.py,其实linux系统不是很关心文件的后缀名,py也行,其他也行,但是为了格式还是写成py最好
print("linux C python")
我们写完代码保存退出后,输入:python3 hello.py运行程序,我们可以看到打印了一句linux C python
#! /usr/bin/python3
print("linux C python")
#! /usr/bin/python
:
-
- 这是一个称为“shebang”(或称为 hashbang)的特殊注释行。它告诉操作系统应该使用哪一程序来执行后面的脚本。在这个例子中,它指示操作系统使用路径
/usr/bin/python
下的 Python 解释器来运行脚本。 - 这行通常只在类 Unix 系统中有效,比如 Linux 或 macOS。在这些系统中,脚本的第一行如果是 shebang,系统就会忽略默认的 shell 解释器(比如 bash),转而使用指定的解释器来执行脚本。
- 注意:在某些系统中,Python 可能安装在不同的路径下,比如
/usr/bin/python3
。如果是这种情况,你需要根据实际情况修改 shebang 行。
- 这是一个称为“shebang”(或称为 hashbang)的特殊注释行。它告诉操作系统应该使用哪一程序来执行后面的脚本。在这个例子中,它指示操作系统使用路径
- 运行结果
如果我们在 hello.py程序开头就指定了解释器,并赋予这个程序一个运行权限,那么就可以直接使用:./hello.py来运行程序
#! /usr/bin/python3
# -* - coding: UTF-8 -* -
print("linux C python")
print("越加越强!")
如果我们在hello03.py程序开头加上了:# -* - coding: UTF-8 -* -,则可以支持中文显示,所以python程序的开头就默认这两句话
2.3. 标识符:
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
- 在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。
2.4. 关键字:
Python关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.5. 基础语法
2.5.1. Python注释
python中单行注释采用 # 开头。
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# 文件名:test.py
# 第一个注释
print ("Hello, Python!") # 第二个注释
输出结果:
注释可以在语句或表达式行末:
name = "Runoob" # 这里的内容是一个注释
python 中多行注释使用三个单引号 ''' 或三个双引号 """。
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# 文件名:test.py
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
print ("Hello, Python!") # 多行注释
2.5.2. 行与缩进:
2.5.3. Python 引号
Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
print("hello world")
print('hello world')
print("hello world")
- 运行结果
2.5.4. 等待用户输入 类似于scanf
下面的程序执行后就会等待用户输入,按回车键后就会退出:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
raw_input("按下 enter 键退出,其他任意键显示...\n")
注意:py3.2之后 只有input
#! /usr/bin/python
# -* - coding: UTF-8 -* -
str = input("请输入任何字符:") # 输入字符串
print("您输入的字符是:",str) # 输出字符串