Найдите наиболее выдающийся цвет на изображении с помощью Emgu CV - PullRequest
1 голос
/ 18 апреля 2011

Итак, у меня есть это изображение лица: http://i.stack.imgur.com/gsZnh.jpg и мне нужно иметь возможность определить наиболее доминирующий / выдающийся RGB и значение YCrCB по нему с помощью Emgu CV. Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 29 августа 2012

Сначала вы должны получить гистограмму каждого цветового канала.Затем вы можете использовать функцию 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; 

Вы можете сделать то же самое для каналов насыщенности и значения.

0 голосов
/ 23 января 2012

Вы можете использовать гистограмму, чтобы найти распределение цветов и выбрать наибольшее значение в качестве доминирующего цвета.Не знаю о связанных функциях в Эмгу CV, хотя пока.Удачи

...