来源:ku77
openMV简介
OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。OpenMV搭载了MicroPython解释器,使其可以在嵌入式端进行python开发。OpenMV基于32位,ARM Cortex-M7内核的OpenMV-H7, 并结合各种摄像头,可以进行多种机器视觉应用的实现,比如人脸检测,物体分类等。
对于省钱党来说这是一个开源的项目,所以有兴趣的可以自己上网找相关资料自制一个,可以省个一两百块大洋。安利一篇文章
一、硬件准备
1. OpenMV
2. 一根micro usb的数据线(一定要有数据传输功能的)
3. 电脑、网络
二、软件准备
1. 在openMV官网下载openmv IDE https://book.openmv.cc/
IDE是由Qt Creator编写,可以跨平台使用,官网提供了windows、mac os、Linux ubuntu 32位和64位,以及树莓派的版本,满足各个平台的开发,使得其应用更加广泛。Windows系统就选第一个啦。
下载得到安装包:
安装过程一路Next,值得一提的是默认安装C盘,可以手动修改安装路径为其它盘,不影响使用。
下一步可以连接上硬件:
电脑将自动识别出一个U盘:
这是由于单片机烧入了固件程序将内部的Flash虚拟成了一个U盘可以看到这个U盘容量特别小,因此在后期的使用过程中建议插SD卡。
用SD卡的好处多多:
1.SD卡也是一个文件系统,当上电的时候,如果插入SD卡,那么SD卡的文件系统就会自动取代内置的Flash文件系统,每次上电,就会运行SD卡中的main.py啦,还可以减少对stm32flash擦除次数,延长寿命。
2.SD卡最大支持2TB的容量。因此可以保存些大的程序,还可以放置训练好的神经网络模型,也可以放置需要对比的图片等进行调用。
内部放置了三个文件,其中main.py文件就是要运行的程序文件。
注:有时会出现驱动安装不完整的情况,打开设备管理器可以看到有个感叹号,我们可以更新驱动程序
官网上有非常详细的解决步骤: 在这
三、软件的功能与使用
OpenMV提供了两者阈值设置方案。分别是阈值编译器和直方图的方式选择阈值。
阈值编译器:优点,所寻找到的目标颜色更加合理,其他相似颜色区域的干扰比较小。缺点,调节LAB的最大最小值比较花费时间。
直立方图恰好相反,他很容易找到LAB的最大最小值的大体区间,但是容易受到相似颜色区域的干扰。所以,建议两者配合使用。
先用直立方图找到LAB的最大最小值的大体区间,再利用阈值编译器对LAB的最大最小值进行微调。
软件安装完成后在主菜单可以找到这个图标:
打开这个软件会跳出一个默认的helloworld.py的例程(其它示例在文件选项可以看到),软件页面如下:
页面左边是代码区域,右上角是帧缓冲区(可以显示摄像头拍到的),我们要选择红色盒子作为目标对象,只需要在帧缓冲区,拖动鼠标左键即可。右下角直方图可以选择四种色彩空间:
·RBG色彩空间:R代表红色,B代表蓝色,G代表绿色。它是一种线性色彩空间,其中颜色是通过红色,绿色和蓝色值的线性组合获得的。(做颜色识别的功能时比较方便)
·灰度(GRAY)色彩空间:单通道格式,值为0~255,颜色值为黑白之间,0是黑色,255是白色。(处理识别数字或轮廓等二值计算时速度比较快)
·LAB色彩空间:Lab颜色空间中,L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表蓝色。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉。()
·YUV色彩空间:“Y”表示明亮度,也就是灰阶值,“U”和“V”表示的则是色度,作用是描述影像色彩及饱和度,用于指定像素的颜色。
参考:常用色彩空间概念
根据直方图(LAB色彩空间)可知,我们的L最大值选择80,最小值为60。A最大值为40,最小值为-20。B的最大值为20,最小值为-10。(注:这个只需要包含绝大部分就行)
阈值编译器只有LAB阈值和灰度阈值设置,由上述四图可得,LAB分布值比较集中,所以选用LAB阈值。
之后进行阈值编译器设置:
左上方工具——>机器视觉——>阈值编译器——>帧缓冲区。
可对要判断图像的LAB值进行调整。注意:这个时候OpenMV会截取帧缓冲区内照片(当前的图片)作为LAB值调整。所以我们采用阈值编译器的时候,需要提前将目标识别单位(红色盒子)放在OpenMV摄像头之前。再进行操作。
根据直立方图的值,我们调整LAB最大和最小值,尽可能地让要目标识别对象变成全白色。(注:即使没有全部变成白色也不影响,反正最后会把所有没有被滤除的白色区域变成一个大框)然后复制下方的LAB阈值。
(58, 80, 19, 51, -10, 21)和直方图读取的数做一个对比(60,80,-20,40,-10,20)。
在这里只是举个例子,其它识别中,也可用其它的色彩空间进行识别。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !