1

所以,我有这张脸的图像:http: //i.stack.imgur.com/gsZnh.jpg 我需要能够使用 Emgu CV 从中确定最重要/最突出的 RGB 和 YCrCB 值。感谢您的帮助。

4

2 回答 2

1

您应该首先获得每个颜色通道的直方图。然后你可以使用 minmax 函数来获得最主要的颜色。

我发布的代码是针对 HSV 图像的,您可以更改颜色空间的通道名称。

  Image<Gray, Byte>[] channels = hsv1.Split();
                Image<Gray, Byte> ImgHue = channels[0];
                Image<Gray, Byte> ImgSat = channels[1];
                Image<Gray, Byte> ImgVal = channels[2];

 DenseHistogram histo1 = new DenseHistogram(255, new RangeF(0, 255));

 histo1.Calculate<byte>(new Image<Gray, byte>[] { ImgHue }, true, null);

  float minV, maxV;
        int[] minL;
        int[] maxL;


 histo1.MinMax(out minV, out  maxV, out minL, out maxL);


 string mystr = Convert.ToString(maxL[0]);
                label1.Text = "Hue= " + mystr; 

你也可以对饱和度和价值通道做同样的事情。

于 2012-08-29T14:07:42.883 回答
0

您可以使用直方图来查找颜色的分布,并选择最大值作为主色。不过暂时不了解 Emgu CV 中的相关功能。祝你好运

于 2012-01-23T15:06:01.290 回答