10分钟快速上手
视频教程1 - OpenMV简介:https://singtown.com/learn/688
视频教程2 - 开箱介绍:https://singtown.com/learn/49985
视频教程3 - 驱动、ide的安装与使用:https://singtown.com/learn/49989/
下载软件
中国官网地址:http://openmv.cc (点击 软件下载)
美国官网下载地址:https://openmv.io/pages/download
Windows
下载后一直点击下一步,就正常安装完成了。
如果没有图像窗口,从右侧可以拖拽出来。
安装驱动
将OpenMV插到电脑。
正常情况下,会自动安装驱动,一切不需要手动安装。在设备管理器中会看到:
但是可能在一些电脑,驱动不会自动安装。
这时在设备管理器中会出现一个叹号,表示没有正常安装驱动。
这时就需要自己手动安装。
首先下载驱动: https://dl.singtown.com/openmv/openmv_windows驱动.zip
解压到桌面,然后右键设备管理器中的这个设备,然后点升级驱动:
Windows驱动安装故障
如果出现下面的情况(此处极少发生,属于电脑故障):
OpenMV 驱动安装失败,90%的情况都是电脑的问题,精简版操作系统和使用了一些优化软件通常是引起此类问题的原因。OpenMV 驱动解决办法跟 arduino 类似。
这是因为精简版的 window 系统删掉了一些不常用的驱动信息引起的。
故障参考资料:
https://forum.singtown.com/topic/230
最后,建议:
- 买电脑的时候,买带正版系统的电脑。
- 打开Windows更新(默认就是打开的,不要手贱关掉它)。
- 即使使用盗版的系统,请在MSDN上下载纯净完整版。
- 千万不要用Ghost安装系统!90%的驱动问题,原因就是Ghost。
MacOS
下载完IDE软件,双击安装程序。一直点击下一步就可以。
如果提示说只能安装App Store和被认可的程序
,那么在安全性与隐私里面设置成任何来源
。
Ubuntu
Ubuntu需要给下载的文件权限。然后双击安装。
运行hello world!
首先确保,IDE和驱动正常安装完成。
将OpenMV通过USB线插入电脑,此时会有一个U盘出现
打开OpenMV IDE。
重点看这张图。
- 点击
连接
- 再点击
运行
在右上角的图像窗里就正确显示图像了。
点击最下方的Serial Terminal,会弹出终端窗口。
同时,在Serial Terminal里会一直打印数据,这个是帧率。是在代码中第17行print(clock.fps())
执行的结果。
追踪小球
将编辑框内的内容全部删掉,换成以下代码:
# 色块监测 例子
#
# 这个例子展示了如何通过find_blobs()函数来查找图像中的色块
# 这个例子查找的颜色是深绿色
import sensor, image, time
# 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
green_threshold = ( 0, 80, -70, -10, -0, 30)
#设置绿色的阈值,括号里面的数值分别是L A B 的最大值和最小值(minL, maxL, minA,
# maxA, minB, maxB),LAB的值在图像左侧三个坐标图中选取。如果是灰度图,则只需
#设置(min, max)两个数字即可。
sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
sensor.set_framesize(sensor.QQVGA) # 使用 QQVGA 速度快一些
sensor.skip_frames(time = 2000) # 跳过2000s,使新设置生效,并自动调节白平衡
sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的,在颜色识别中,一定要关闭白平衡。
sensor.set_auto_whitebal(False)
#关闭白平衡。白平衡是默认开启的,在颜色识别中,一定要关闭白平衡。
clock = time.clock() # 追踪帧率
while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # 从感光芯片获得一张图像
blobs = img.find_blobs([green_threshold])
#find_blobs(thresholds, invert=False, roi=Auto),thresholds为颜色阈值,
#是一个元组,需要用括号[ ]括起来。invert=1,反转颜色阈值,invert=False默认
#不反转。roi设置颜色识别的视野区域,roi是一个元组, roi = (x, y, w, h),代表
#从左上顶点(x,y)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。
#这个函数返回一个列表,[0]代表识别到的目标颜色区域左上顶点的x坐标,[1]代表
#左上顶点y坐标,[2]代表目标区域的宽,[3]代表目标区域的高,[4]代表目标
#区域像素点的个数,[5]代表目标区域的中心点x坐标,[6]代表目标区域中心点y坐标,
#[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型),
#[8]代表与此目标区域交叉的目标个数,[9]代表颜色的编号(它可以用来分辨这个
#区域是用哪个颜色阈值threshold识别出来的)。
if blobs:
#如果找到了目标颜色
for b in blobs:
#迭代找到的目标颜色区域
# Draw a rect around the blob.
img.draw_rectangle(b[0:4]) # rect
#用矩形标记出目标颜色区域
img.draw_cross(b[5], b[6]) # cx, cy
#在目标颜色区域的中心画十字形标记
print(clock.fps()) # 注意: 你的OpenMV连到电脑后帧率大概为原来的一半
#如果断开电脑,帧率会增加
运行程序后
这个程序会根据green_threshold的阈值,进行色块查找。
更改阈值
那么如何自己更改这个阈值呢?我们怎么知道我们的物体的颜色阈值呢?
- 数字列表项目首先在摄像头中找到目标颜色,在framebuffer中的目标颜色上左击圈出一个矩形
- 在framebuffer下面的坐标图中,选择LAB Color Space。
- 三个坐标图分别表示圈出的矩形区域内的颜色的LAB值,选取三个坐标图的最大最小值,即( 0, 60, -70, -10, -0, 30)
文件系统
文件系统是OpenMV(或者说MicroPython)特别优秀的特点。什么是文件系统呢?简单来说,就是各种文件夹和文件以树形结构排列,简单来说,就是你的U盘啦。而且在代码中可以使用路径来进行读入文件,创建文件等操作。
脱机运行
视频教程附二 - 脱机运行:https://singtown.com/video
那么问题来了?OpenMV支持文件系统有什么用呢?
答案是,相当方便!
OpenMV把内置Flash虚拟成一个文件系统,当你插入OpenMV到电脑上的时候,电脑会弹出一个U盘!里面就是OpenMV的文件系统。当你想烧录固件的时候,直接把脚本文件复制到这个“U盘”的main.py中。每次上电的时候,OpenMV会自动运行里面的main.py,这样就实现了脱机运行。
一键下载
在工具栏里,点击将打开的脚本保存到OpenMV Cam(作为main.py)
, IDE就会自动将当前文件保存到main.py,很方便。
供电
OpenMV有两个电源输入端:
- VIN(有时也会标识为VCC)
- USB输入
VIN输入为3.6V~5V,推荐5V。
USB和VIN可以同时供电。
OpenMV有一个电源输出端:
- 3.3V,这个电压是OpenMV的稳压器输出的,用于给其他传感器供电。 注意:不要给3.3V直接供电,没有内部芯片的保护,很容易烧毁。
SD卡
那如果我的代码有10万行,内置的flash不够用怎么办?我想保存图片怎么办?
答案是,可以使用SD卡!
那么SD卡怎么用呢?SD卡也是一个文件系统,当上电的时候,如果插入SD卡,那么SD卡的文件系统就会自动取代内置的Flash文件系统,每次上电,就会运行SD卡中的main.py
啦,是不是很直观,很方便。SD卡最大支持32G的容量。