Часто используемый цвет на изображении - 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы