基于Openmv的pid巡线,请大佬们帮我看看可行性高不高。

第一次打电赛,也没什么经验。队友的板子还没弄好,我写完没法调试。

背景为21年送药小车。本文没有经过实际调试,慎用。

直接上代码!


import sensor, image, time, math
from pyb import LED
from machine import UART

sensor.reset()
#sensor.set_hmirror(True)
#sensor.set_vflip(True)
sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的,在颜色识别中,一定要关闭白平衡。
sensor.set_auto_whitebal(False)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()

#补光
#LED(1).on()  # 红灯
#LED(2).on()  # 绿灯
#LED(3).on()  # 蓝灯  三个一起开就是白灯

# 获取目标色块阈值
roi1 = (130, 70, 100, 100)


# 将图像分割成5块区域,分别计算线的中心坐标再求平均

#test_roi6 = (0, 120, 360, 24)
#test_roi7 = (0, 144, 360, 24)
#test_roi8 = (0, 168, 360, 24)
#test_roi9 = (0, 192, 360, 24)
#test_roi10 = (0, 216, 360, 24)

# —————————————————————————————————————————————————————————————————————————————————————————
# 通过串口打印
uart = UART(3, 115200)
def send_data(data1):
    global uart
    data1 = str(data1)
    data = bytearray("[", data1, "]")
    uart.write(data)

# —————————————————————————————————————————————————————————————————————————————————————————
# 查找最大色块
def find_max_blobs(blobs):
    max_size = 0
    max_blob = None
    for blob in blobs:
        if blob.pixels() > max_size:
            max_blob = blob
            max_size = blob.pixels()
    return max_blob

# 寻找直线
line_threshold = [(32, 81, -7, 80, -5, 66)]
def find_blobs_to_line(myroi, line_threshold, max_width=50):
    blobs = img.find_blobs(line_threshold, roi=myroi, area_threshold=50, pixel_threshold=50)
    if blobs and len(blobs) == 1:
        return blobs[0].cx(), blobs[0].cy()
    else:
        max_blob = find_max_blobs(blobs)
        if max_blob is not None and max_blob.w() < max_width:
            return max_blob.cx(), max_blob.cy()
    return None

# 查找数字
num_roi = (0, 48, 160, 40)
def find_num(num_roi, num_threshold, max_width=80):
    blobs = img.find_blobs(num_threshold, roi=num_roi, area_threshold=50, pixel_threshold=50)
    if blobs:
        max_bl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值