智能送药小车(一)——K210巡线


K210 颜色识别

这部分基本就是例程上的内容,添加了一点注释。关于相关的运用到的函数解释,可以参考K210颜色识别.

import sensor,lcd,time

#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1) #后置模式,所见即所得

#lcd初始化
lcd.init()

clock=time.clock()

# 颜色识别阈值 (L Min, L Max, A Min, A Max, B Min, B Max) LAB模型
# 可以根据工具中的阈值编辑器选取阈值
# L 代表亮度(0-100) A 表示红色到绿色的范围(-128绿 - 128红) B 表示黄色到蓝色的范围(-128蓝 - 128黄)
thresholds = [(30, 100, 15, 127, 15, 127), # 红色阈值
              (30, 100, -64, -8, -32, 32), # 绿色阈值
              (0, 30, 0, 64, -128, -20)] # 蓝色阈值


while True:

    clock.tick()

    img=sensor.snapshot()

    blobs = img.find_blobs([thresholds[0]]) # 0,1,2分别表示红,绿,蓝色。
    if blobs:
        for b in blobs:
            # 圈出色块
            tmp=img.draw_rectangle(b[0:4])
            tmp=img.draw_cross(b[5], b[6])
            # 打印色块中心点坐标
            print("x = %d y = %d", b[5], b[6])


    lcd.display(img)     #LCD显示图片
    #print(clock.fps())   #打印FPS

K210 找出最大色块

import sensor,image,lcd,time

#常用初始化
lcd.init()
sensor.reset()                      #复位摄像头
sensor.set_pixformat(sensor.RGB565) #设置像素格式 RGB565
sensor.set_framesize(sensor.QVGA)   #设置帧尺寸 QVGA (320x240)
sensor.skip_frames(time = 2000)     #跳过不稳定画面

#红色阈值
red_threshold = (0, 100, 15, 127, 15, 127)


#寻找最大色块函数定义
def find_max(blobs):
    max_size=0
    for blob in blobs:
        if blob[4] > max_size:
            max_blob=blob
            max_size = blob[4]
    return max_blob

while True:
    img=sensor.snapshot()
    blobs = img.find_blobs([red_threshold],merge=True)

    if blobs:
        max_blob = find_max(blobs)#调用函数,返回最大色块
    
    # 圈出最大色块,标记中心位置,写明中心坐标 
    img.draw_rectangle(max_blob[0:4], color=(0,0,0)) #用黑色框出最大色块
    img.draw_cross(max_blob[5], max_blob[6])
    img.draw_string(max_blob.x(),max_blob.y(), (str(max_blob.cx())+','+str(max_blob.cy())), color = (0,0,0))
    print("x = %d y = %d", max_blob[5], max_blob[6])
    lcd.display(img)
  • 12
    点赞
  • 196
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值