当前位置:   article > 正文

智能送药小车(一)——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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/693610
推荐阅读
相关标签
  

闽ICP备14008679号