智能送药小车(一)- K210巡线技术解析

智能送药小车

  • K210 颜色识别
  • 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)
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » 智能送药小车(一)- K210巡线技术解析

    发表评论