前言: 视觉小车最重要的是视觉功能,其实现方式主要有:
- Opencv+外置计算机摄像头。需要计算机作为上位机。
- Stm32+OV7670。较难,大师级。
- OpenMV摄像头。较简单,入门级。
博主刚开始为了准备项目,了解尝试过前两种方式,最后才终于接触到OpenMV这种主控板,因为其开发简单、结构简单、非常适合用于智能小车,入门虽然简单,功能却十分强大。
OpenMV简介:
OpenMV的目标是成为“机器视觉世界的Arduino ",有自己的IDE,采用Python二次开发简单易用,可扩展,开源,详细教程和技术手册。
OpenMV3是主要以STM32F427CPU为核心,集成了OV7725摄像头的模块。
OpenMV的功能:
颜色追踪、路线识别、形状识别、二维码识别、人脸识别、瞳孔追踪等。
上图来源
入手准备:
- OpenMV3 M7摄像头实物。(博主入手的OpenMV主控板来自于星瞳科技, 手边有实物更容易开发)
- 官网下载安装的IDE。(集成开发环境,是集成了代码编写、分析、编译、调试功能的软件)
OpenMV采用 Python 给用户开发,而Python简单易学,简洁强大,在视觉开发方面十分突出。下文是初步学习使用 OpenMV 模块和入门到拓展学习Python语法
初步使用 OpenMV:
其实初步学习使用的话,官网的十分钟上手教程已经非常详细,推荐大家去看。(其实博主不是懒,是怕不专业误导你们~)
其中需要注意的是LAB颜色空间:
LAB:L亮度。 范围: 0-100, 0白,L=50时,就相当于50%的黑
A表示从洋红色至绿色的范围。范围:-128至+127, -128绿色 ,+127就是红色
B表示从黄色至蓝色的范围。 范围:-128至+127,-128 b是蓝色。+127 b是黄色
学习Python语法:
推荐学习Python的网站:
博主的Python学习笔记:
主要克隆之前的文章:【OpenMv】学习笔记之初入江湖
语句 Print
我们的魔教口号是什么?
print('hello, world')
print()函数也可以接受多个字符串,用逗号“,”隔开,print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,就可以连成一串输出:
print('I am a', 'handsome', 'boy')
print(300)#直接打印整数300
print('100 + 200 =', 100 + 200)#‘字符串’
注释符号:#
模块 py
:
以屁眼.py结尾的就是一个模块
import 语句,引入模块,需要在开始就引用,就是c语言的头文件吧
import 模块名.函数名
import sys
语句 from…import
:
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
#例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import fibonacci
函数:
函数就是可以实现功能的方式,可重复调用。
类型有:
- 无参数无返回
- 无参数有返回
- 有参数无返回
- 有参数有返回
以下源代码实现功能:定义一个plus(x,y)
函数,将x+y的结果输出。
def plus(x,y):
a=x+y
return(a)
#输入参数x,y,求出x+y
#有入口参数和返回值
使用截图:
以下源代码实现功能:定义一个求平方的power(x)
函数,将 x 的平方输出。
#定义一个求平方的函数
def power(x):
return x * x
以下源代码实现功能:定义一个n次方的power(x, n)
函数,将 x 的 n 次方输出。
#定义一个求n次方的函数
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
条件判断 if
:
用法:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
以下源代码实现功能:输入年龄,用 if 判断是 kid 还是 teenager 还是 adult 。
age = 20
#age=0;
#age=input('Input your age: ')
#input()读取用户的输入
if age >= 6 and age <18:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
循环 while
和 For x in range(y)
:
以下源代码实现功能:采用 for x in range(100)
计算 0+1+2+...+99
的和。
# 注意从0开始加,没有加100。
sum = 0
for x in range(100):# range()函数生成一个整数序列
sum = sum + x
print(sum)
以下源代码实现功能:采用 while循环
计算100以内所有奇数之和。
#算100以内所有奇数之和
sum = 0
n = 99
while n > 0:
sum = sum