所以我是图像处理的新手,我现在正在学习emgucv ....I想要跟踪具有特定颜色的球-橙色..然而..我需要的so..what是阈值、隔离或二进制化(我不知道正确的术语)。保留白色和黑色的灰色图像的图像。白色是橙色,黑色是非橙色..(抱歉,如果这听起来有点愚蠢)..然而,在对图像进行二进制化时,有许多考虑因素...阴影..。橙色的阴影..。
我搞不懂什么是最好的函数。我已经尝试过图像的inRange函数。
imgProcessed =imgOriginal.InRange(最小颜色,最大颜色);
然而,..我发现它是slow..and的,我真的不能把所有的球都二值化。(从深橙色到浅橙色)..另外,每次光线条件改变时,我都要调整这些值。有没有办法获得“全部”或至少“大部分”的橙色色调?Sorry..newbie在这里...我很感激任何help..code不是necessary..thanks!:D
有这么多函数可以使用..HSV..inrange..cvthreshold..what是最好的waY吗?使用hsv而不是bgr会更快吗?
发布于 2014-01-13 06:03:46
我已经这样做了。我放弃了OpenCV函数,手工完成了数学运算。下面是我的代码:
for (i = 0; i < rows; i = i + step)
{
for (j = 0; j < cols; j = j + step)
{
closestprimary = new Bgr(0, 0, 0);
currentcolor = ImageFrame[i, j];
B = (int)currentcolor.Blue;
G = (int)currentcolor.Green;
R = (int)currentcolor.Red;
//hue = atan2(sqr(3) * (G - B), 2 * R - G - B)
hue = ((Math.Atan2(1.732050808 * (double)(G - B), (double)(2 * R - G - B)) * 57.295779513) + 360) % 360; ;
//find closest primary hue (60 degree)
if (hue >= 15 && hue < 50) {
closestprimary = new Bgr(0, 127, 255); } //orange - sorta had to eyeball this one /shrug
ImageFrame[i, j] = closestprimary;//set new color
}
}希望您可以看到橙色色调在15和50之间,并可以将数字更改为您想要的任何颜色。
http://johndyer.name/lab/colorpicker/帮助我决定了色调。(看最上面的数字,用“H”表示)
https://stackoverflow.com/questions/15255680
复制相似问题