我在试着写一个程序来检测魔方的颜色

这就是我到目前为止所运行的屏幕截图,我基本上使用了emguCV附带的边缘检测示例的代码,并用它来检测小立方体(但你可以看到一些小立方体没有被检测到,但这不是我想在这里讨论的问题)。
现在在找出小立方体的位置后,我想要检测它们是什么颜色,目前我使用HSV值来决定颜色,如下所示:
if (current_colour.Hue > 120 && current_colour.Hue < 170)
{
Colours[(int)colornames.W]++;
}
else if (current_colour.Hue > (170))
{
Colours[(int)colornames.R]++;
}
else if (current_colour.Hue > 5 && current_colour.Hue < 20 )
{
Colours[(int)colornames.O]++;
}
else if (current_colour.Hue > 47 && current_colour.Hue< 60)
{
Colours[(int)colornames.G]++;
}
else if (current_colour.Hue > 15 && current_colour.Hue < 30)
{
Colours[(int)colornames.Y]++;
}
else if (current_colour.Hue > 100 && current_colour.Hue < 110)
{
Colours[(int)colornames.B]++;
}我使用photoshop从试错中得到的每种颜色的值在哪里…我相信肯定有更好的方法,因为我得到的结果是混乱的(特别是与白色和红色)有帮助吗?
发布于 2013-06-06 11:05:40
如果你的图像和你的例子一样简单,你可以在图像上做一个直方图。直方图中的峰值将与您使用的颜色相对应。
所以你必须做一个或三个直方图,取最高的10个(或其他) bin值,它们彼此之间的距离足够远,然后你就有了你的颜色。
https://stackoverflow.com/questions/8028802
复制相似问题