将OpenCV 用于识别彩色LED颜色时,可以通过分色计算各通道非饱和像素的HSV值,能可靠识别各LED的颜色。
使用python编程,识别一个1024*480的BGR图像时,耗时约50毫秒。
可以大概识别LED的圆心座标、可以准确识别LED的色彩。记住,在识别前,要先对三通道彩色图进行模糊化处理。
最后统计ROI区域的H值总和,以及区域内非零像素的数量,求有效平均即可。
原始图像:
识别出来的图像
共检测出12个亮的LED; 本次计算耗时: 55 ms.
结果: ok ; LED编号: 1 ; 期望颜色: YG, 实际颜色 : YG;期望状态: 亮, 实际状态: 亮;位于坐标 (509,383)
结果: ok ; LED编号: 2 ; 期望颜色: YG, 实际颜色 : YG;期望状态: 亮, 实际状态: 亮;位于坐标 (342,375)
结果: ok ; LED编号: 3 ; 期望颜色: R, 实际颜色 : R;期望状态: 亮, 实际状态: 亮;位于坐标 (451,315)
结果: ok ; LED编号: 4 ; 期望颜色: O, 实际颜色 : O;期望状态: 亮, 实际状态: 亮;位于坐标 (259,309)
结果: ok ; LED编号: 5 ; 期望颜色: O, 实际颜色 : O;期望状态: 亮, 实际状态: 亮;位于坐标 (514,275)
结果: ok ; LED编号: 6 ; 期望颜色: B, 实际颜色 : B;期望状态: 亮, 实际状态: 亮;位于坐标 (351,268)
结果: ok ; LED编号: 7 ; 期望颜色: R, 实际颜色 : R;期望状态: 亮, 实际状态: 亮;位于坐标 (436,212)
结果: ok ; LED编号: 8 ; 期望颜色: O, 实际颜色 : O;期望状态: 亮, 实际状态: 亮;位于坐标 (264,201)
结果: ok ; LED编号: 9 ; 期望颜色: B, 实际颜色 : B;期望状态: 亮, 实际状态: 亮;位于坐标 (563,149)
结果: ok ; LED编号: 10 ; 期望颜色: W, 实际颜色 : W;期望状态: 亮, 实际状态: 亮;位于坐标 (351,145)
结果: ok ; LED编号: 11 ; 期望颜色: G, 实际颜色 : G;期望状态: 亮, 实际状态: 亮;位于坐标 (438,82)
结果: ok ; LED编号: 12 ; 期望颜色: W, 实际颜色 : W;期望状态: 亮, 实际状态: 亮;位于坐标 (287,68)
结果: ok ; LED编号: 13 ; 期望颜色: W, 实际颜色 : 灭;期望状态: 灭, 实际状态: 灭;位于坐标 (1287,68)