所以,我有一张脸的图片:
http://i.stack.imgur.com/gsZnh.jpg
我需要能够使用Emgu CV从中确定最主要/最突出的RGB和YCrCB值。感谢您的帮助。
最佳答案
您应该首先获取每个颜色通道的直方图。然后,您可以使用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;
您也可以对“饱和度”和“值(value)” channel 执行相同的操作。
关于opencv - 使用Emgu CV从图像中找出最突出的颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5696961/