物品分拣项目记录(一)

物品分拣项目记录(一)

—OPENMV识别色块返回坐标

声明一下我是处于学习阶段的小白一枚,第一次写博客作为学习记录,加深印象,可能写的不对,或者写的不全,欢迎在下评论哈,我会及时更正

  1. 正文
OPENMV代码:
import sensor, image, time, math, json
from pyb import UART
from pyb import LED

uart = UART(1, 115200, timeout_char=1000)#串口1 115200 超时时间1s

#存放所要识别的颜色
croci = [(22, 100, 15, 127, -67, 127)]# 桔黄
back = [(32, 100, -128, 127, -128, 127)]#黑色

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)   #320240 Dpi
sensor.skip_frames(time = 2000)     #跳过几帧 初始化
sensor.set_auto_gain(True)          #打开自动增益
sensor.set_auto_whitebal(True)      #打开白平衡
clock = time.clock()

while(True):
    data1=[]  #用于存放坐标
    data2=[]
    clock.tick()
    img = sensor.snapshot().lens_corr(strength = 2.3, zoom = 1.0)     #拍照+畸形矫正(加了超广角镜头)

    #画蓝色线条把敏感区框起来
    img.draw_line(27,50,252,50,(0,0,255),thickness = 2);
    img.draw_line(27,50,27,240,(0,0,255),thickness = 2);
    img.draw_line(252,50,252,105,(0,0,255),thickness = 2);
    img.draw_line(252,105,305,105,(0,0,255),thickness = 2);
    img.draw_line(305,105,305,240,(0,0,255),thickness = 2);


    blobs = img.find_blobs(croci,
                           roi=[27,50,302,232],     #敏感区域
                           pixels_threshold=40,     #所要识别色块的像素大小范围
                           area_threshold=60,
                           merge=False,
                           merge_cb=False)
    if blobs:
       for a in blobs:
            img.draw_cross(a.cx(), a.cy())
            data1.append(str("X"))          #打包数据
            data1.append(str(a.cx()))
            data1.append(str("Y"))
            data1.append(str(a.cy()))
            data1.append(str("A"))


    blobs = img.find_blobs(back,
                           roi=[27,50,280,232],
                           invert=True,
                           pixels_threshold=40,
                           area_threshold=60,
                           merge=False,
                           merge_cb=False)
    if blobs:
        for b in blobs:
            if(b.pixels()<=2000):
                img.draw_cross(b.cx(), b.cy())
                data2.append(str("X"))
                data2.append(str(b.cx()))
                data2.append(str("Y"))
                data2.append(str(b.cy()))
                data2.append(str("B"))

    string = ''.join(data1) + ''.join(data2)
    if len(string):
         uart.write(string)     #串口发送打包好的数据
         print(string)


识别效果图片:

在这里插入图片描述

实物图片:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值