import sensor, image, time, math
from pyb import UART
# 初始化串口
uart = UART(3, 19200)
# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)
clock = time.clock()
thresholds = [(37, 60, 37, 72, 13, 58), #红
(0, 15, 0, 40, -80, -20), #黄
(30, 100, 15, 127, 15, 127), #蓝
(30, 100, -64, -8, -32, 32)] #绿
# erlap heavily.在颜色阈值开始严重重叠之前具有16个阈值的场景。
# 在图像中查找颜色块
def find_color(color):
blobs = img.find_blobs([color])
if blobs:
# 找到最大的颜色块
largest_blob = max(blobs, key=lambda b: b.pixels())
# 返回颜色块的中心点坐标
return largest_blob.cx(), largest_blob.cy()
else:
return None
while True:
# 读取摄像头图像
clock.tick()
img = sensor.snapshot()
# 在图像中查找红色和绿色
red_center = find_color((255, 0, 0))
green_center = find_color((0, 255, 0))
# 在图像中查找蓝色和黄色
blue_center = find_color((0, 0, 255))
yellow_center = find_color((255, 255, 0))
# 根据颜色位置发送串口信息
if red_center and green_center:
uart.write('x')
elif blue_center and yellow_center:
uart.write('y')
elif blue_center and green_center:
uart.write('m')
elif red_center and yellow_center:
uart.write('n')
# 延时一段时间,以避免发送太多的串口数据
time.sleep![0_1683970938813_IMG_20230513_170742.jpg](正在上传 93%)
N
ndml 发布的帖子
-
为什么帧缓冲区回卡,大概卡十多秒又换下一个画面卡?