Консольное приложение, позволяющее применять к изображениям различные фильтры,аналогичные фильтрам в популярных графических редакторах. Выполнено в рамках прохождения курса по C++.
Входные и выходные графические файлы должны быть в формате BMP.
Формат BMP поддерживает достаточно много вариаций, но в этом задании будет использоваться
24-битный BMP без сжатия и без таблицы цветов. Тип используемого DIB header
- BITMAPINFOHEADER
.
Описание формата аргументов командной строки:
{имя программы} {путь к входному файлу} {путь к выходному файлу} [-{имя фильтра 1} [параметр фильтра 1] [параметр фильтра 2] ...] [-{имя фильтра 2} [параметр фильтра 1] [параметр фильтра 2] ...] ...
При запуске без аргументов программа выводит справку.
./image_processor input.bmp /tmp/output.bmp -crop 800 600 -gs -blur 0.5
В этом примере
- Загружается изображение из файла
input.bmp
- Обрезается до изображения с началом в верхнем левом углу и размером 800х600 пикселей
- Переводится в оттенки серого
- Применяется размытие с сигмой 0.5
- Полученное изображение сохраняется в файл
/tmp/output.bmp
Список фильтров может быть пуст, тогда изображение должно быть сохранено в неизменном виде. Фильтры применяются в том порядке, в котором они перечислены в аргументах командной строки.
-
Crop (-crop width height) Обрезает изображение до заданных ширины и высоты. Используется верхняя левая часть изображения. Если запрошенные ширина или высота превышают размеры исходного изображения, выдается доступная часть изображения.
-
Grayscale (-gs) Преобразует изображение в оттенки серого.
-
Negative (-neg) Преобразует изображение в негатив.
-
Sharpening (-sharp) Повышение резкости.
-
Edge Detection (-edge threshold) Выделение границ. Изображение переводится в оттенки серого.Пиксели со значением, превысившим
threshold
, окрашиваются в белый, остальные – в черный. -
Gaussian Blur (-blur sigma) Гауссово размытие, параметр – сигма.