赞
踩
这部分基本就是例程上的内容,添加了一点注释。关于相关的运用到的函数解释,可以参考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
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。