OpenMV——机器视觉界的Arduino
王子彧
学号 19021210677
【嵌牛导读】OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。
【嵌牛鼻子】OpenMV、机器视觉
【嵌牛提问】什么是OpenMV?他能应用在什么地方?
一、OpenMV简介
OpenMV摄像头是一款开源、小巧,低功耗,低成本的模块,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV,包括IO引脚。你可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。
OpenMV摄像头的特点:
STM32F765VI ARM Cortex M7 处理器,216 MHz ,512KB RAM,2 MB flash. 所有的 I/O 引脚输出 3.3V 并且 5V 耐受。这个处理器有以下的IO接口。
全速 USB (12Mbs) 接口,连接到电脑。当插入OpenMV摄像头后,你的电脑会出现一个虚拟COM端口和一个“U盘”。
μSD卡槽拥有100Mbs读写,这允许你的OpenMV摄像头录制视频,和把机器视觉的素材从SD卡提取出来。
一个SPI总线高达54Mbs速度,允许你简单的把图像流数据传给LCD扩展板,WiFi扩展板,或者其他控制器。
一个 I2C总线,CAN总线, 和一个异步串口总线 (TX/RX) ,用来链接其他控制器或者传感器。
一个12-bit ADC 和一个12-bit DAC。
3个 I/O 引脚用于舵机控制.
所有的IO口都可以用于,中断和PWM(板子上有10个I/O引脚)。
一个RGB LED(三色), 两个高亮的 850nm IR LED(红外).
OV7725 感光元件在80 FPS下可以处理640×480 8-bit 灰度图或者320×240 16-bit RGB565 彩色图像;当分辨率低于320×240可以达到120FPS。大多数简单的算法运行在30FPS一下。你的 OpenMV 摄像头有一个2.8mm焦距镜头在一个标准M12镜头底座。如果你想使用更多的定制镜头,你可以很容易的安装。
二、应用
目前OpenMV摄像头可以用来做一下的事情 (未来会更多):
Frame Differencing帧差分算法
你可以使用OpenMV Cam上的帧差分算法来查看场景中的运动情况。帧差分算法可以将OpenMV用于安全应用。
Color Tracking颜色追踪
你可以使用OpenMV在图像中同时检测多达16种颜色(实际上永远不会想要找到超过4种颜色),并且每种颜色都可以有任意数量的不同的色块。OpenMV会告诉您每个色块的位置,大小,中心和方向。使用颜色跟踪,您的OpenMV Cam可以进行编程,以跟踪太阳,线跟踪,目标跟踪等等。
Marker Tracking标记跟踪
您可以使用OpenMV Cam来检测颜色组的颜色,而不是单独的颜色。这允许你在对象上放置颜色标签(2种或多种颜色的标签),OpenMV会获取标签对象的内容。
Face Detection人脸检测
你可以使用OpenMV Cam(或任何通用对象)检测脸。你的OpenMV摄像头可以处理Haar模板进行通用对象检测,并配有内置的Frontal Face 模板和Eye Haar模板来检测人脸和眼睛。
Eye Tracking眼动跟踪
你可以使用眼动跟踪来检测某人的注视方向。你可以使用它来控制机器人。眼睛跟踪检测瞳孔的位置,同时检测图像中是否有眼睛。
Optical Flow光流
你可以使用光流来检测您的OpenMV摄像机面前的画面。例如,您可以使用四旋翼上的光流来位置在空中的稳定性。
QR Code Detection/Decoding二维码检测/解码
您可以使用OpenMV Cam在其视野中读取QR码。通过QR码检测/解码,您可以使智能机器人能够读取环境中的标签。
Data Matrix Detection/Decoding矩阵码检测/解码
OpenMV Cam M7也可以检测和解码矩阵码(2D条形码)。您可以在此处查看我们的视频。
Linear Barcode Decoding条形码
OpenMV Cam M7还可以处理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 M7也160×120像素下追踪AprilTags,高达约12 FPS。AprilTags是旋转不变,尺度不变,剪切不变和照明不变的最先进的基准标记。
Line Detection直线检测
OpenMV Cam可以在几乎跑满帧率的情况下,快速完成无限长的直线检测。而且,也可以找到非无限长的线段。
Circle Detection圆形检测
你可以使用OpenMV很容易的检测图像中的圆形。
Rectangle Detection圆形检测
OpenMV也可以检测矩形,它使用了AprilTag库中的方形检测代码。
Template Matching模板匹配
你可以使用OpenMV模板匹配来检测视野中是否有模板相似的图片。例如,可以使用模板匹配来查找PCB上的标记,或读取显示器上的已知数字。
Image Capture图像捕捉
你可以使用OpenMV捕获高达320×240 RGB565(或640×480灰度)BMP / JPG / PPM / PGM图像。可以直接在Python脚本中控制如何捕获图像。最重要的是,使用机器视觉的算法,进行绘制直线,绘制字符,然后保存。
Video Recording视频录制
您可以使用OpenMV摄像机记录多达320×240 RGB565(或640×480灰度)MJPEG视频或GIF图像(或者RAW视频)。您可以在Python脚本中直接控制如何将每个视频帧记录,并完全控制视频录制的开始和结束。而且,像拍摄图像一样,您可以使用机器视觉的算法,进行绘制直线,绘制字符,然后保存。
最后,所有上述功能都可以混合IO引脚的控制,来配合你自己的自定义应用,以与现实世界交谈。
三、引脚定义
【嵌牛总结】OpenMV最大的竞争力在于其易于上手,相较于市场上其他的机器视觉开说,他的开发时间短,开发成本低。对于需要深度开发的人来说,其开源的优势也显现出来,可以对其底层的STM32进行底层开发,满足专业机器视觉的种种要求。