OpenMV初体验

OpenMV项目创造一款低价,可扩展,支持Python的机器视觉模块,这个模块的目标是成为“机器视觉世界的Arduino “,

OpenMV搭载MicroPython解释器,这允许你在嵌入式上使用Python来编程 (Python 3 to be precise). Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。 使用python遍历每一个色块,就可以获取他们所有信息。

OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV。你可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。

STM32H743II ARM Cortex M7 处理器,480 MHz ,1MB RAM,2 MB flash. 所有的 I/O 引脚输出 3.3V 并且 5V 耐受。这个处理器有以下的IO接口。

  • 全速 USB (12Mbs) 接口,连接到电脑。当插入OpenMV摄像头后,你的电脑会出现一个虚拟COM端口和一个“U盘”。

  • μSD卡槽拥有100Mbs读写,这允许你的OpenMV摄像头录制视频,和把机器视觉的素材从SD卡提取出来。

  • 一个SPI总线高达100Mbs速度,允许你简单的把图像流数据传给LCD扩展板,WiFi扩展板,或者其他控制器。

  • 一个 I2C总线,CAN总线, 和2两个异步串口总线 (TX/RX) ,用来链接其他控制器或者传感器。

  • 一个12-bit ADC 和一个12-bit DAC。

  • 2个 I/O 引脚用于舵机控制.

  • 所有的IO口都可以用于,中断和PWM(板子上有10个I/O引脚)。

  • 一个RGB LED(三色), 两个高亮的 850nm IR LED(红外)。

  • 32 MB 外置的 32-bit SDRAM ,100 MHz的时钟,达到 400 MB/s 的带宽。

  • 32 MB 外置的 quadspi flash, 100 MHz的时钟,4-bit DDR模式达到 100 MB/s 的带宽。

那么

OpenMV适合做什么?

  • DIY相关的项目制作,比如追踪小球的车,云台,或者解魔方的机器人。

  • 对成本要求很高的嵌入式工业方案,比如流水线物品的分拣。

OpenMV不适合做什么?

复杂的算法:比如OCR识别,车牌识别,猫狗分类,深度学习之类的。

后期没有我的手把手教学去哪里找资料:

  • OpenMV美国官网:https://openmv.io

  • OpenMV中国官网:
    http://openmv.cc

  • wiki网站(已弃用):http://wiki.openmv.cc

  • 论坛:https://forum.singtown.com/category/5/openmv-cam

  • OpenMV交流QQ群:324391148

  • 图像处理的入门书,推荐冈哥的这本。
    https://book.douban.com/subject/1106342/

  • OpenMV各种库和使用,看官网文档:
    http://docs.openmv.io/

  • 中文文档https://docs.singtown.com/micropython/zh/latest/openmvcam/index.html

  • 如果之前有C/C++/Java(或任何其他语言)的编程经验,推荐
    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

  • 如果之前没有任何编程经验,推荐
    笨方法学Python,https://www.kancloud.cn/kancloud/learn-python-hard-way/49864

  • MicroPython 文档,http://docs.micropython.org/en/latest/pyboard/

  • MicroPython 中文文档,,https://docs.singtown.com/micropython/zh/latest/pyboard/index.html

也得了解一些概念:

什么是帧率

帧率(FPS)就是每秒钟处理的图片数量,如果超过20帧,人眼就基本分辨不出卡顿。当然,如果用在机器上,帧率是越高越好的,OpenMV的最大帧率对比:
注:没有标注均为不传输图像给IDE,因为这个过程很耗费时间。

LAB亮度-对比度

Lab颜色空间中,L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表兰色。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉。

因此L分量可以调整亮度对,修改a和b分量的输出色阶来做精确的颜色平衡。

注意:在OpenMV的查找色块的算法中,运用的就是这个LAB模式!

镜头的焦距

因为图像是通过镜头的光学折射,照到感光元件上的。那么镜头就决定了,整个画面的大小和远近。一个最重要的参数就是焦距。

镜头焦距:是指镜头光学后主点到焦点的距离,是镜头的重要性能指标。镜头焦距的长短决定着拍摄的成像大小,视场角大小,景深大小和画面的透视强弱。当对同一距离远的同一个被摄目标拍摄时,镜头焦距长的所成的象大,镜头焦距短的所成的象小。注意焦距越长,视角越小。

还有一点是镜头的畸变,因为光学原理,在感光芯片上不同的位置,与镜头的距离不同的,简单说就是近大远小,所以在边缘会出现鱼眼效果(桶型畸变)。为了解决这个问题,可以在代码中使用算法来矫正畸变,注:OpenMV中使用image.lens_corr(1.8)来矫正2.8mm焦距的镜头。也可以直接使用无畸变镜头。无畸变镜头加入了额外的矫正透镜部分,价格自然会高不少。

我们打开设备管理器看见了这个串口COM8

打开文件管理器里面有这个3个文件

打开这个txt的文档看见了这个项目的地址


目前这个小模块可以干的事情有以下这些事情~~~

  • Frame Differencing帧差分算法

    • 你可以使用OpenMV Cam上的帧差分算法来查看场景中的运动情况。帧差分算法可以将OpenMV用于安全应用。

  • Color Tracking颜色追踪

    • 你可以使用OpenMV在图像中同时检测多达16种颜色(实际上永远不会想要找到超过4种颜色),并且每种颜色都可以有任意数量的不同的色块。OpenMV会告诉您每个色块的位置,大小,中心和方向。使用颜色跟踪,您的OpenMV Cam可以进行编程,以跟踪太阳,线跟踪,目标跟踪等等。视频演示:https://singtown.com/learn/49993/

  • Marker Tracking标记跟踪

    • 您可以使用OpenMV Cam来检测颜色组的颜色,而不是单独的颜色。这允许你在对象上放置颜色标签(2种或多种颜色的标签),OpenMV会获取标签对象的内容。

  • Face Detection人脸检测

    • 你可以使用OpenMV Cam(或任何通用对象)检测脸。你的OpenMV摄像头可以处理Haar模板进行通用对象检测,并配有内置的Frontal Face 模板和Eye Haar模板来检测人脸和眼睛。https://singtown.com/learn/50013/

  • Eye Tracking眼动跟踪

    • 你可以使用眼动跟踪来检测某人的注视方向。你可以使用它来控制机器人。眼睛跟踪检测瞳孔的位置,同时检测图像中是否有眼睛。

  • Person Detection人检测

    • 你可以使用内置的人检测器(TensorFlow Lite模型)检测视野中是否有人。

  • Optical Flow光流

    • 你可以使用光流来检测您的OpenMV摄像机面前的画面。例如,您可以使用四旋翼上的光流来控制在空中的稳定性。

  • QR Code Detection/Decoding二维码检测/解码

    • 您可以使用OpenMV Cam在其视野中读取QR码。通过QR码检测/解码,您可以使智能机器人能够读取环境中的标签。

  • Data Matrix Detection/Decoding矩阵码检测/解码

    • OpenMV Cam 也可以检测和解码矩阵码(2D条形码 Data Matrix)。您可以在此处查看我们的视频。

  • Linear Barcode Decoding条形码

    • OpenMV Cam 还可以处理1D条形码。它可以解码 EAN2, EAN5, EAN8, UPCE, ISBN10, UPCA, EAN13, ISBN13, I25, DATABAR, DARABAR_EXP, CODABAR, CODE39, CODE93, 和 CODE128。在此处查看我们的视频:https://singtown.com/learn/50017/

  • AprilTag Tracking标记跟踪

    • 甚至比上面的QR码更好,OpenMV Cam 也可以追踪AprilTags。AprilTags是旋转不变,尺度不变,剪切不变和照明不变的最先进的基准标记。在此处查看我们的视频: https://singtown.com/learn/49590/

  • Line Detection直线检测

    • OpenMV Cam可以在几乎跑满帧率的情况下,快速完成无限长的直线检测。而且,也可以找到非无限长的线段。您可以在这里看到我们的视频:https://singtown.com/learn/50009/

  • Circle Detection圆形检测

    • 你可以使用OpenMV很容易的检测图像中的圆形。

  • Rectangle Detection矩形检测

    • OpenMV也可以检测矩形,它使用了AprilTag库中的方形检测代码。

  • Template Matching模板匹配

    • 您可以使用OpenMV模板匹配来检测视野中是否有模板相似的图片。例如,可以使用模板匹配来查找PCB上的标记,或读取显示器上的已知数字。

  • Image Capture图像捕捉

    • 你可以使用OpenMV捕获RGB565/灰度的 BMP / JPG / PPM / PGM图像。可以直接在Python脚本中控制如何捕获图像。最重要的是,使用机器视觉的算法,进行绘制直线,绘制字符,然后保存。

  • Video Recording视频录制

    • 你可以使用OpenMV摄像机记录RGB565/灰度的MJPEG视频或GIF图像(或者RAW视频)。你可以在Python脚本中直接控制如何将每个视频帧记录,并完全控制视频录制的开始和结束。而且,像拍摄图像一样,您可以使用机器视觉的算法,进行绘制直线,绘制字符,然后保存。

  • TensorFlow Lite for Microcontrollers

    • TensorFlow Lite支持使你可以在OpenMV Cam上运行自定义图像分类和分割模型。借助TensorFlow Lite,你可以轻松分类画面中复杂的区域,并根据所看到的内容控制I/O引脚。

最后,所有上述功能都可以混合IO引脚的控制,来配合你自己的自定义应用,以与现实世界交谈。

这个是引脚图

可以看到其实性能还是比较羸弱的

此时我看见有质量,我正好有秤

上去就是一顿量,单位g

这个是刚开机的提示页面

安装成功的页面

下载IDE先,

下载win版吧,之后再装别的版本

https://openmv.io/pages/download

下载中

next

next

下一步

安装驱动

第一次打开的样子

不慌,多摁几次ok就行,3次

点是

ok啦

重新插拔

硬件的类型

点这个地方开始上传代码

这个地方有跳转行的功能

我的摄像头平放桌面

一些色彩空间,用到再讲

可以看文档,比较详细

file:///C:/Users/yunswj/AppData/Roaming/OpenMV/qtcreator/html/index.html
https://forums.openmv.io/
https://book.openmv.cc/

我们打开它的安装目录,试图找到demo再哪里

在这里

自带demo很是丰富,这个是我在vscode里面打开

点这里运行

这个地方和以前的编辑器不一样,一些功能我找不到了

import sensor#引入感光元件的模块
# 设置摄像头sensor.reset()#初始化感光元件sensor.set_pixformat(sensor.RGB565)#设置为彩色sensor.set_framesize(sensor.QVGA)#设置图像的大小sensor.skip_frames()#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
# 一直拍照while(True): img = sensor.snapshot()#拍摄一张照片,img为一个image对象

这个是以前的一个代码

初始化,对硬件做配置

然后写了一个有趣的东西是跳过照片,就是其实是对性能的妥协

下面一个死循环,到死

初始化

  • sensor.reset() 初始化感光元件

设置彩色/黑白

  • sensor.set_pixformat() 设置像素模式。

    • sensor.GRAYSCALE: 灰度,每个像素8bit。

    • sensor.RGB565: 彩色,每个像素16bit。

设置图像大小

  • sensor.set_framesize() 设置图像的大小

    • sensor.QQCIF: 88x72

    • sensor.QCIF: 176x144

    • sensor.CIF: 352x288

    • sensor.QQSIF: 88x60

    • sensor.QSIF: 176x120

    • sensor.SIF: 352x240

    • sensor.QQQQVGA: 40x30

    • sensor.QQQVGA: 80x60

    • sensor.QQVGA: 160x120

    • sensor.QVGA: 320x240

    • sensor.VGA: 640x480

    • sensor.HQQQVGA: 80x40

    • sensor.HQQVGA: 160x80

    • sensor.HQVGA: 240x160

    • sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())

    • sensor.B64X64: 64x64 用于帧差异 image.find_displacement())

    • sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())

    • sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())

    • sensor.LCD: 128x160 (用于LCD扩展板)

    • sensor.QQVGA2: 128x160 (用于LCD扩展板)

    • sensor.WVGA: 720x480 (用于 MT9V034)

    • sensor.WVGA2:752x480 (用于 MT9V034)

    • sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)

    • sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)

    • sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)

    • sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)

    • sensor.HD: 1280x720 (仅用于 OV5640 感光元件)

    • sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)

    • sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)

    • sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)

    • sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)

    • sensor.WQXGA2: 2592x1944 (仅用于 OV5640 感光元件)

跳过一些帧

  • sensor.skip_frames(n=10) 跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。

获取一张图像

  • sensor.snapshot() 拍摄一张照片,返回一个image对象。

自动增益/白平衡/曝光

  • sensor.set_auto_gain() 自动增益开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动增益。

  • sensor.set_auto_whitebal() 自动白平衡开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动白平衡。

  • sensor.set_auto_exposure(enable[\, exposure_us])

    • enable 打开(True)或关闭(False)自动曝光。默认打开。

    • 如果 enable 为False, 则可以用 exposure_us 设置一个固定的曝光时间(以微秒为单位)。

设置窗口ROI

sensor.set_windowing(roi)

ROI:Region Of Interest,图像处理中的术语“感兴趣区”。就是在要处理的图像中提取出的要处理的区域。

sensor.set_framesize(sensor.VGA) # 高分辨率sensor.set_windowing((640, 80)) #取中间的640*80区域
'''Author: your nameDate: 2020-11-23 19:44:28LastEditTime: 2020-11-23 19:48:58LastEditors: Please set LastEditorsDescription: In User Settings EditFilePath: \opwnmv\examples\01-Basics\helloworld.py'''# Hello World Example## Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!
import sensor, image, time
sensor.reset() # Reset and initialize the sensor.重启然后初始化传感器sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)sensor.skip_frames(time = 2000) # Wait for settings take effect.clock = time.clock() # Create a clock object to track the FPS.
while(True): clock.tick() # Update the FPS clock. img = sensor.snapshot() # Take a picture and return the image. print(clock.fps()) # Note: OpenMV Cam runs about half as fast when connected # to the IDE. The FPS should increase once disconnected.

这个是现代的代码,写的更加的巧妙

原来串口在这个地方

还可以搜索东西~

https://blog.csdn.net/zhuoqianxun/article/details/104016800
(0)

相关推荐

  • 【博文精选】摄像头采集显示例程

    Okay,在你渗透前面几个例程后,应该掌握了VIP Mini开发板的的基本外设.假如你真的愿意下功夫研究我的的代码,接下里开始进入重点开发部分.以下部分开发工程代码量比较大,工作量也比较大,同样的教程 ...

  • 下一代CMOS图像传感器猜测

        在2019年4月的伦敦图像传感器峰会上,松下介绍了他们耗时5年,与富士联合开发的Organic-Photoconductive-Film CMOS Image Sensor---- 有机光导薄 ...

  • 【博文连载】OV7725寄存器介绍

    首先介绍一下OV7725的寄存器.OV7725总共有172个寄存器,作为CMOS Sensor的工作模式的配置.而这172个寄存器,有些只读,有些则同时支持读写功能.在传感器正常工作工作前,必须进行寄 ...

  • 一只小白的学习自述:如何用OpenMV Cam 点亮机器人双眼。

    机器人视觉系统从上世纪六十年代开始研究,伴随着微计算机技术的飞速发展,视觉技术应用到了越来越多的机器人系统. 特别是在无人驾驶和机械臂分拣上的应用 Drive.ai无人车 DoBot机械臂视觉分拣 与 ...

  • 曝光和gamma原理

    从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD 等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度. 人眼的感光宽容度比胶片要高很多,而胶片的感光宽容 ...

  • 人生苦短,我用Micropython——怼上openmv

    原    创 对于micropython,论坛D大的贡献很大,我也是跟着他的脚印一步学习了解了这个脚本:还有图像处理这方面,树莓派上搞了simplecv这个软件平台,加之对算法以及Linux平台的不了 ...

  • 公开课精华 | 无人驾驶中感知的挑战与尝试

    本文总结于深圳元戎启行公司点云感知方向技术负责人邹晓艺,在深蓝学院的关于无人驾驶中感知的挑战与尝试的公开课演讲内容. 主讲人邹晓艺来自深圳元戎启行公司,曾在百度IDL和ADU部门工作过,是百度 apo ...

  • 【博文连载】OV7725 Sensor介绍

    好了,废话不再多说.经过了前面几个例程,LED的驱动显示应该不在话下,VGA其实真的只是固定行场时序扫描的问题,SDRAM可以站在巨人的肩膀上,我们已经完成了基本的视频图像采集流程.如果有办法在前面加 ...

  • 得明亲子春令营初体验

    孩子身体的毛病,年龄越大,越难以根除,在无意识中影响他一生的发展,为解决这样的问题,得明健身在五一期间,特推出为期四天的,亲子春令营,锻炼.经络体检(建档并跟踪追访),给孩子一个健康光明的未来!!! ...

  • 【广东】夏雪晴《厨房初体验——凉拌海带丝》指导老师:林燕玲

    厨房初体验--凉拌海带丝 东华小学东城校区二年级 夏雪晴 一个风和日丽的早上,我开开心心地和外婆.妈妈一起去菜市场买菜,因为我今天要亲自尝试制作一道我最喜欢吃的美味菜肴--凉拌海带丝. 在制作之前,外 ...

  • 3千元贵在了哪?——贝纳利Tornado302赛道初体验

    前两天贝纳利正式发布了新款的飓风302,并以Tornado302的全新命名正式回归品牌,当然售价也回到了起初的29800元,在这个国产品牌降价的大潮,就有人质疑贝纳利是不是飘了? 品牌回归 29800 ...

  • 草堂小学之开学初体验

    成都学区房已获授权 本文是模仿另一篇热门文章<五朵金花小学的入读初体验-成师附小>,强行蹭热度. 开学已经2个多月了,草堂小学给我的总体感觉是那么好,放弃成外本部名额不亏. (请参考挨骂之 ...

  • 五朵金花之入读初体验——成师附小

    成都学区房已获授权 溜爸前言 这位家长是:跨城市搬到成都来读书的那种,之前还在东部一个沿海城市居住,现在已然来到成都,开始小学生活. 关于为什么要来成都,可查看这篇:上学是一件举家搬迁的事情,总要折腾 ...

  • Alibaba EasyExcel初体验

    简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel.相对于Apache POI来说,EasyExcel是从磁盘上一行行 ...

  • 开塞露の初体验o(╥﹏╥)o

    姐不在江湖,但江湖却有姐的传说...... 我身体有一个鸡肋的生理本能,去到一个新的地方,开始的几天都很难排便. 刚上高中那阵子,要再学校住宿,周末才能回家. 这就让我那个神奇的生理特质兴奋过了头. ...

  • 雪落无声伴课来——网络教学初体验

    清晨,拉开窗帘,见天灰蒙蒙的,像笼着一层薄烟. 细细地观看,哦!是下雪了! 这雪,轻,柔,细,像柳絮一般,从空中缓缓地飘落下来,袅袅婷婷,轻柔曼妙. 低头,俯瞰楼下的路,路面已经被罩上了一层薄薄的雪, ...

  • 试驾初体验 女司机全方位感受范爷同款科雷嘉

    点击上方 e汽车 关注我们 文 | 饭冰冰 微信号 | eautocar 写在前面的话 这里没有高大上的试驾图,也没有专业的测评词汇,有的只是一个女司机的真实试驾初体验-- 试驾车辆:东风雷诺科雷嘉 ...