使用Emgu CV从图像中找到最突出的颜色



我有一张脸的图片:https://i.stack.imgur.com/gsZnh.jpg我需要能够确定最主导/突出的RGB和YCrCB值从它使用Emgu CV。谢谢你的帮助。

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

我发布的代码是一个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; 

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

您可以使用直方图找到颜色的分布,并选择最高的值作为主色。目前还不知道Emgu CV的相关功能。祝你好运

相关内容

  • 没有找到相关文章

最新更新