Часто используемый цвет на изображении - C#
Формулировка задачи:
Есть изображение, нужно найти самый часто используемый цвет.
Через GetPixel получил массив цветов.
Так понимаю, нужно получить количество одинаковых элементов в массиве,и вернуть тот, у которого максимально кол-во повторов. Исключить белы и черный при этом.
Буду признателен за LINQ сортировку которая найдет элемент в массиве имеющий максимальное количество повторов.
public int GetTopColor(Bitmap sourceBitmap) { ArrayList colors = new ArrayList(); for (int i = 0; i < sourceBitmap.Width; i++) { for (int j = 0; j < sourceBitmap.Height; j++) { Color pixelColor = sourceBitmap.GetPixel(i, j); if (pixelColor.R != 0 && pixelColor.R != 255 ) { colors.Add(pixelColor.R); } } } //тут LINQ для colors }
ArrayList не принципиален, можно и List тогда можно будет сделать так
var c = colors.GroupBy(i => i);
осталось вывести x.Key имеющий максимальное значение x.Value
буду признателен за любое решение.
Решение задачи: «Часто используемый цвет на изображении»
textual
Листинг программы
return colors.Where(pair => pair.Key.Green != 0 && pair.Key.Green != 255).Aggregate((l, r) => l.Value > r.Value ? l : r).Key;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д