OpenMV色块识别与去噪

程序展示

         

# 色块监测 例子
#
# 这个例子展示了如何通过find_blobs()函数来查找图像中的色块
# 这个例子查找的颜色是深红色

import sensor, image, time

# 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
red_threshold   =(0, 46, 25, 111, -128, 90)
#设置红色的阈值,括号里面的数值分别是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([red_threshold])

    MIN_BLOB_AREA = 220  # 最小色块面积阈值
    
    if blobs:
        for b in blobs:
           if b.pixels() > MIN_BLOB_AREA:
                img.draw_rectangle(b[0:4])  # rect
                img.draw_cross(b[5], b[6])  # cx, cy

    print(clock.fps()) # 注意: 你的OpenMV连到电脑后帧率大概为原来的一半
    #如果断开电脑,帧率会增加

代码细节讲解

一、色块的识别

        通过调节颜色阈值,来让画面将你需要的颜色调成亮白,其他的地方处理成黑色即可。

1、阈值

 

2、原图

 3、有噪声的阈值 

4、调整好后 (选中的红色为目标)

 

        我们发现他们的阈值是不一样的,我们选择更适合我们的第二个阈值,将他放在我们的程序里面。 


# 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
red_threshold   =(0, 46, 25, 111, -128, 90)
#设置红色的阈值,括号里面的数值分别是L A B 的最大值和最小值(minL, maxL, minA,
# maxA, minB, maxB),LAB的值在图像左侧三个坐标图中选取。如果是灰度图,则只需
#设置(min, max)两个数字即可。

 二、去除噪声

        我们会发现要是不去除噪音时,当图像中出现多个小红色时,会框选出多个小红框,可是我们就只需要中间的主要红色,为了去除噪音,我们可以加入

    MIN_BLOB_AREA = 220  # 最小色块面积阈值
    
    if blobs:
        for b in blobs:
           if b.pixels() > MIN_BLOB_AREA:
                img.draw_rectangle(b[0:4])  # rect
                img.draw_cross(b[5], b[6])  # cx, cy

        使用pixels()方法来获取色块的像素点数量,并将其作为面积的估计。在上面的代码中,我们使用了b.pixels()来获取色块的像素点数量。然后,通过比较像素点数量和最小阈值MIN_BLOB_AREA,来判断色块的大小是否符合要求。

效果对比

未加去噪

去噪
 

感谢 

谢谢大家的阅读,希望和大家一起进步 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值