#opencv #webcam #imaging #emgucv
#opencv #Вебкам #визуализация #emgucv
Вопрос:
Итак, у меня есть это изображение лица: http://i.stack.imgur.com/gsZnh.jpg и мне нужно иметь возможность определять наиболее доминирующий / заметный RGB и значение YCrCb из него, используя Emgu CV. Спасибо за помощь.
Ответ №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. Удачи