我有以下经过特定OpenCV函数预处理的图像:
现在我正在尝试获取每种颜色的积木数量(在这种情况下,每种颜色都是1)。这些是我拥有的所有颜色。
我的计划是循环遍历所有颜色,使用OpenCV函数"inRange"并获取区域大小。我的问题是如何识别不同的颜色。我尝试了红色,并且很难找到一个好的范围。在询问谷歌之后,我明白了我必须使用HSV颜色才能获得带有色调值的好范围。
所以我写了这段代码(用Java为某种原因):
![不同颜色的乐高积木](https://istack.dev59.com/iCnWT.webp)
我的计划是循环遍历所有颜色,使用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版本。
非常感谢, Dennis