🌏 introduction

OpenMV是一款基于Python的嵌入式图像处理平台,它可以帮助您快速地开发视觉应用程序,例如机器人、智能家居以及自动化控制系统等。平台简单易用,支持多种传感器和摄像头,并且具有良好的可扩展性。

⬇️ Installation

IDE下载地址:https://singtown.com/openmv-download/

安装遇到问题参考:https://book.openmv.cc/quick-starter.html

还有奇怪问题参考视频:https://www.bilibili.com/video/BV1RW411K7yh

🦾 QuickStart

(镜头!需要先自己对一下焦(对焦的方法是拧镜头(注意中间有个圈圈是用来锁定的)))

Untitled

<aside> ⬆️ 打开IDE后,请确保能看到『帧缓冲区』和『直方图』,如果没有请点击右侧的展开

左下角是连接区,上面那个像电源插头的按钮是连接OpenMV,下面红绿按钮控制代码运行和停止

确保可以运行hello_world.py,且在右上角的『帧缓冲区』里能看到清晰的图像

</aside>


<aside> ➡️ 直方图默认展示的是整个图片全局的颜色分布。除了可以自行调整色彩空间外,还可以在上面框选出一个局部的范围,这样下面的直方图只会显示你框选的局部的颜色分布信息。

</aside>

Untitled

🎨 Color Filtering

在一般的计算机视觉日常应用中,颜色依然是一个重要的图像信息。

在显示和印刷当中,我们通常使用RGB三个维度的信息来表示颜色。而在CV领域中,LAB是更为普遍采用的色彩空间,你可以在中下面这些链接中找到相关的信息。

/Intro to Color Space

那么现在,我们先尝试一个QuickStart:在IDE中打开Tools/Machine Vsion/Threshold Editor,在这里你可以通过拖动滑块。我们需要调整合适的阈值,直到在右侧的Binary Image中正确地筛出我们的目标。

Untitled

👨🏻‍💻 Template Code

import sensor, image, time

# 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
green_threshold   =(40, 100, -128, -38, -128, 127)
#设置绿色的阈值,括号里面的数值分别是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() # 从感光芯片获得一张图像
    
		#通过find_blobs()函数来查找图像中的色块
    blobs = img.find_blobs([green_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
            #在目标颜色区域的中心画十字形标记

Untitled

👩🏻‍💻 Have a try