颜色提取图像HSV的值范围EMGUCV

3
在接下来的内容中,
        Image<Hsv, Byte> hsvimg = img.Convert<Hsv, Byte>();           
        Image<Gray, Byte>[] channels = hsvimg.Split();  
        Image<Gray, Byte> imghue = channels[0];         
        Image<Gray, Byte> imgsat = channels[1];
        Image<Gray, Byte> imgval = channels[2];         

        Image<Gray, byte> huefilter = imghue.InRange(new Gray(?), new Gray(?));            
        Image<Gray, byte> satfilter = imghue.InRange(new Gray(?), new Gray(?));
        Image<Gray, byte> valfilter = imgval.InRange(new Gray(?), new Gray(?));

不同颜色提取的不同通道(h,s,v)的范围值是多少?是0-255还是0-128。我想检测图像中的橙色,黑色和天蓝色物体。
1个回答

2
你可以尝试像这样为橙色做一些类似的事情。
 Image<Gray, byte> huefilter = 
                imghue.InRange(new Gray(Color.Orange.GetHue() - 10), 
                                     new Gray(Color.Orange.GetHue() + 10));   

对于-10和+10仅仅是猜测,可能会比较宽泛。您可以尝试调整并查看哪种效果最好。

对于satfilter,您可以使用Color.Orange.GetSaturation()

而对于第三个,我假设您可以使用Color.Orange.GetBrightness()


Color.Orange.GetHue() 返回0-255的值,Color.Orange.GetSaturation() 返回0-1的值,我有些困惑img.InRange()需要什么范围值... 但仍然无法检测到橙色。 - littleBrain
Color.Orange.GetSaturation() ... 是在 System.Drawing 命名空间下的 Color 吗? - littleBrain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接