c# накладывание фильтров на изображение

277
12 ноября 2017, 14:22

Стоит задача накладывать на изображение различные фильтры. Т.е. добавить в картинку помехи, рябь, сделать его черно-белым, изменение яркости и т.д. Наверняка для таких операций существует готовая библиотека, но поиск выдает только различные учебники по реализации подобных фильтров

По одному из гайдов написал изменение яркости... но зачем делать то, что уже готово и оптимизировано

public static Image ChangeBrightness(Bitmap image, float brightness)
        {
            ImageAttributes imageAttributes = new ImageAttributes();
            int width = image.Width;
            int height = image.Height;
            float[][] colorMatrixElements = {
                        new float[] {brightness, 0, 0, 0, 0},
                        new float[] {0, brightness, 0, 0, 0},
                        new float[] {0, 0, brightness, 0, 0},
                        new float[] {0, 0, 0, 1, 0},
                        new float[] {0, 0, 0, 0, 1}
                      };
            ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
            imageAttributes.SetColorMatrix(
              colorMatrix,
              ColorMatrixFlag.Default,
              ColorAdjustType.Bitmap);
            Graphics graphics = Graphics.FromImage(image);
            graphics.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width,
                     height,
                     GraphicsUnit.Pixel,
                     imageAttributes);
            return image;
        }
Answer 1

Да, конечно подобные вещи уже реализованы.

Могу посоветовать OpenCV. В ней реализованы практически все операции, которые можно делать с изображениями. В оригинале либа написана на C++, но если open source реализация на C# - openCvSharp.

Функционал огромен, но конкретно по вашему вопросу можно посмотреть в вот этот семпле.

READ ALSO
Деление для BigInteger

Деление для BigInteger

Пишу собственный класс BigInteger, тк стандартный использовать нельзя, да и нужно реализовать только деление с остатком BigInteger на числа 2, 8, 16(для...

353
The input is not a valid Base-64 string as it contains a non-base 64 character

The input is not a valid Base-64 string as it contains a non-base 64 character

При отправке формы происходит ошибка(Даже, если не выбран файл)При отсутствии input type="file" ошибки не возникает

421
Как узнать, что в домашнюю сеть подключились новые клиенты?

Как узнать, что в домашнюю сеть подключились новые клиенты?

Есть роутер, мой ПК подключен к нему напрямую через LAN

218
C# - Обработка команд бота

C# - Обработка команд бота

Всем приветНе могу понять

266