Opencv 使用Emgu CV从图像中查找最突出的颜色
因此,我有一张脸的图像:Opencv 使用Emgu CV从图像中查找最突出的颜色,opencv,webcam,imaging,emgucv,Opencv,Webcam,Imaging,Emgucv,因此,我有一张脸的图像: 我需要能够使用Emgu CV从中确定最主要/突出的RGB和YCrCB值。谢谢您的帮助。您可以使用直方图查找颜色分布,并选择最高值作为主色。目前还不知道Emgu CV中的相关功能。祝您好运您可以使用直方图查找颜色的分布,并选择最高值作为主色。目前还不知道Emgu CV中的相关功能。祝你好运你应该首先得到每个颜色通道的直方图。然后您可以使用最小最大值函数来获得最主要的颜色 我发布的代码是针对HSV图像的,您可以更改颜色空间的频道名称 Image<Gray, Byt
我需要能够使用Emgu CV从中确定最主要/突出的RGB和YCrCB值。谢谢您的帮助。您可以使用直方图查找颜色分布,并选择最高值作为主色。目前还不知道Emgu CV中的相关功能。祝您好运您可以使用直方图查找颜色的分布,并选择最高值作为主色。目前还不知道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;
Image[]channels=hsv1.Split();
图像ImgHue=通道[0];
图像ImgSat=通道[1];
图像ImgVal=通道[2];
DenseShistogram histor1=新的DenseShistogram(255,新的范围f(0255));
histor1.Calculate(新图像[]{ImgHue},true,null);
浮动最小值,最大值;
int[]minL;
int[]maxL;
历史1.MinMax(out minV,out maxV,out minL,out maxL);
字符串mystr=Convert.ToString(maxL[0]);
标签1.Text=“Hue=”+mystr;
您也可以对饱和度通道和值通道执行相同的操作。您应该首先获得每个颜色通道的直方图。然后您可以使用最小最大值函数来获得最主要的颜色 我发布的代码是针对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;
Image[]channels=hsv1.Split();
图像ImgHue=通道[0];
图像ImgSat=通道[1];
图像ImgVal=通道[2];
DenseShistogram histor1=新的DenseShistogram(255,新的范围f(0255));
histor1.Calculate(新图像[]{ImgHue},true,null);
浮动最小值,最大值;
int[]minL;
int[]maxL;
历史1.MinMax(out minV,out maxV,out minL,out maxL);
字符串mystr=Convert.ToString(maxL[0]);
标签1.Text=“Hue=”+mystr;
您也可以对饱和度和值通道执行相同的操作