在下面的,

        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(?));

不同颜色提取的不同 channel (h,s,v)的范围值是多少?是 0-255 还是 0-128。我想检测图像的橙色、黑色和天蓝色对象。

最佳答案

你能试试这样的橙色吗

 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()

关于c# - 用于颜色提取 EMGUCV 的 Image HSV 值范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6133158/

10-12 21:32