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))