【学习笔记之MaxiPy 篇】寻找色块

该代码示例展示了如何使用OpenMV摄像头初始化屏幕,并通过设置RGB565格式和QVGA分辨率进行图像捕捉。然后,它定义了绿色阈值并寻找绿色色块,找到后在图像上绘制矩形和十字标记,并在LCD屏幕上显示。此外,还详细介绍了blob对象的各种属性,如位置、尺寸、像素数量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import sensor
import image
import lcd
import time
lcd.init()#初始化屏幕
#摄像头加载
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

green_threshold   = (0,   80,  -70,   -10,   -0,   30)#定义绿色参数# 从图片中查找所有色块对象(image.blob)列表, 传入的颜色阈值参数按照 LAB 格式(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)
while True:
    img=sensor.snapshot()#将获取的图片放在img参数中
    blobs = img.find_blobs([green_threshold])#查找绿色色块方法
    if blobs:
        for b in blobs:    #for循环把所有的色块找一遍。
            tmp=img.draw_rectangle(b[0:4]) #image.draw_rectangle(rect_tuple, color=White)在图像中画一个矩形框。rect_tuple 的格式是 (x, y, w, h)
            tmp=img.draw_cross(b[5], b[6])#image.draw_cross(x, y, size=5, color=White)画一个十字架
            c=img.get_pixel(b[5], b[6])# 通过image.get_pixel(x, y)方法来获取一个像素点的值
    lcd.display(img)#将图片放在屏幕上

来自https://book.openmv.cc/image/blob.html
blob有多个方法:

blob.rect() 返回这个色块的外框——矩形元组(x, y, w, h),可以直接在image.draw_rectangle中使用。

blob.x() 返回色块的外框的x坐标(int),也可以通过blob[0]来获取。

blob.y() 返回色块的外框的y坐标(int),也可以通过blob[1]来获取。

blob.w() 返回色块的外框的宽度w(int),也可以通过blob[2]来获取。

blob.h() 返回色块的外框的高度h(int),也可以通过blob[3]来获取。

blob.pixels() 返回色块的像素数量(int),也可以通过blob[4]来获取。

blob.cx() 返回色块的外框的中心x坐标(int),也可以通过blob[5]来获取。

blob.cy() 返回色块的外框的中心y坐标(int),也可以通过blob[6]来获取。

blob.rotation() 返回色块的旋转角度(单位为弧度)(float)。如果色块类似一个铅笔,那么这个值为0180°。如果色块是一个圆,那么这个值是无用的。如果色块完全没有对称性,那么你会得到0360°,也可以通过blob[7]来获取。

blob.code() 返回一个16bit数字,每一个bit会对应每一个阈值。举个例子:

blobs = img.find_blobs([red, blue, yellow], merge=True)

如果这个色块是红色,那么它的code就是0001,如果是蓝色,那么它的code就是0010。注意:一个blob可能是合并的,如果是红色和蓝色的blob,那么这个blob就是0011。这个功能可以用于查找颜色代码。也可以通过blob[8]来获取。

blob.count() 如果merge=True,那么就会有多个blob被合并到一个blob,这个函数返回的就是这个的数量。如果merge=False,那么返回值总是1。也可以通过blob[9]来获取。

blob.area() 返回色块的外框的面积。应该等于(w * h)

blob.density() 返回色块的密度。这等于色块的像素数除以外框的区域。如果密度较低,那么说明目标锁定的不是很好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IsQiya

很庆幸我的文章对您有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值