2021电赛F题之openmv巡线

import pyb, sensor, image, time, ustruct
from pyb import UART

# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(2000)
sensor.set_auto_whitebal(False)
sensor.set_auto_gain(False)

# 颜色阈值(根据实际校准调整)
GROUND_THRESHOLD = (59, 25, 127, 19, -128, 89)

# UART初始化
uart = UART(3, 115200)

# 均匀分布的ROI
roi_width = 32
roi_height = 40
rois = [(i * roi_width, 40, roi_width, roi_height) for i in range(5)]

def send_data(data):
    uart.write(ustruct.pack("<BBb", 0xA5, 0xA6, data))

while True:
    img = sensor.snapshot()  # 移除镜头校正测试帧率
    flags = [0] * 5

    # 合并查找色块
    blobs = img.find_blobs([GROUND_THRESHOLD], roi=(0, 40, 160, 40), merge=True)
    for blob in blobs:
        x_center = blob.cx()
        for i, roi in enumerate(rois):
            if roi[0] <= x_center < roi[0] + roi_width:
                flags[i] = 1
                break

    # 生成数据并发送
    data = sum(flags[i] << (4 - i) for i in range(5))
    send_data(data)

    # 绘制ROI区域(调试时使用)
    for roi in rois:
        img.draw_rectangle(roi, color=(255, 0, 0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值