【问题标题】:Find the Most Prominent Color From an Image Using Emgu CV使用 Emgu CV 从图像中找到最突出的颜色
【发布时间】:2011-08-07 12:08:29
【问题描述】:

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

【问题讨论】:

    标签: opencv webcam imaging emgucv


    【解决方案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; 
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-06
        • 2016-02-17
        • 1970-01-01
        • 2011-07-03
        • 1970-01-01
        • 2020-12-22
        • 2017-12-24
        • 2021-04-22
        相关资源
        最近更新 更多