一、前言
在图像识别中,如果想知道一个区域的颜色信息,我们可以使用统计信息——Statistics
二、ROI(感兴趣的区域)
如图,如果我们想要知道蓝色方框内的颜色信息,我们想要定义这个方框的位置信息
roi的格式是(x, y, w, h)的tupple.
- x:ROI区域中左上角的x坐标(即起始x坐标,x=5)
- y:ROI区域中左上角的y坐标(即起始y坐标,y=5)
- w:ROI的宽度
- h:ROI的高度
三、Statistics
- 划定区域
img.get_statistics(roi=(0,0,10,20))
- 获取LAB通道信息
color_l=statistics.l_mode() color_a=statistics.a_mode() color_b=statistics.b_mode()
Lab模式通道是由一个明度通道,和两个颜色通道(红绿通道和蓝黄通道)组成,在编辑图像时,就可以单独编辑它的亮 度通道和颜色通道,不会像RGB那样相互影响
- 画一个矩形
img.draw_rectangle(ROI)
四、完整代码
检测左上方的区域中的颜色值,并在终端输出
import sensor, image, time sensor.reset() # 初始化摄像头 sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565. sensor.set_framesize(sensor.QVGA) sensor.skip_frames(10) # 跳过10帧,使新设置生效 sensor.set_auto_whitebal(False) # Create a clock object to track the FPS. ROI=(80,30,15,15) while(True): img = sensor.snapshot() # Take a picture and return the image. statistics=img.get_statistics(roi=ROI) color_l=statistics.l_mode() color_a=statistics.a_mode() color_b=statistics.b_mode() print(color_l,color_a,color_b) img.draw_rectangle(ROI)
- sensor.set_auto_whitebal(False)
颜色识别必需关闭白平衡和自动增益
效果
五、讨论
【待解决】调试过程中,常有OpenMV卡死的现象