【发布时间】:2016-06-01 13:28:23
【问题描述】:
我有以下图像,使用某些 OpenCV 函数进行了预处理:
现在我正在尝试获取每种颜色的砖块数量(在这种情况下,每种颜色为 1)。这些都是我有的颜色。
我的计划是遍历所有颜色,使用 OpenCV 函数“inRange”并获取区域大小。我的问题是识别不同的颜色。我尝试了红色并努力寻找一个好的范围。询问谷歌后我明白了,我必须使用 HSV 颜色,才能获得良好的色调值范围。
所以我写了这段代码(出于某种原因在 Java 中):
Mat img; //img is given from previos code
Mat hsv = img.clone();
Imgproc.cvtColor(img, hsv, Imgproc.COLOR_BGR2HSV);
在这之后,我希望有一个图像,我可以用它来获得不同的颜色。事实上我得到了这个:
在这张图片中,颜色几乎被破坏了......红色和浅绿色看起来一样,其他颜色也完全不同。
现在我的问题是: 我有什么问题吗?是否可以区分乐高积木的颜色?我能做些什么来实现这一目标?我正在为 Java 使用 OpenCV 3.1.0。
非常感谢, 丹尼斯
【问题讨论】:
-
看看here
-
@Miki 谢谢,但这对我不起作用。例如:我试着变蓝。答案是“蓝色是 120 +- 15 灵敏度”。但是在 HSV 图像中,没有蓝色(在 RGB 图片中有 2 个蓝砖)。我的问题是,HSV 转换会破坏所有颜色,我无法获得正确的颜色……例如,在紫罗兰色板和右侧(黑色)区域中可以找到蓝色。