No Image

C библиотека для работы с изображениями

СОДЕРЖАНИЕ
113 просмотров
12 декабря 2019

Основа для программирования графических фильтров в С++

При программировании этой основы используется библиотека DevIL, о которой подробно рассказываетcя в этой статье.

Создайте у себя в проекте следующие файлы:

  1. Image.h — header file;
  2. Image.cpp — cpp code file;

В файле Image.h будут храниться описания функций, а в файле Image.cpp — реализации функций.

В названиях функций и констант вы встретите приставку "ag", вместо неё вы можете поставить любую другую. Это сделано для того чтобы не было дубликатов функций или констант в разных API.

Директива препроцессора #pragma once нужна для контроля: конкретный файл должен подключаться при компиляции только один раз.

C++ — один из самых мощных и востребованных языков программирования. Ежедневно на нём пишут сотни приложений, зачастую использующих GUI. Однако работа с графикой не всегда удобна программисту — в таком случае применяют готовые графические библиотеки. Они позволят сделать разработку графической части приложений максимально быстрой и удобной.

SFML (Simple and Fast Multimedia Library) — одна из самых удобных и быстрых графических библиотек для 2D-графики. Её неоспоримое преимущество — минимальные требования к уровню знаний языка и лёгкость освоения: всего за несколько дней можно написать вполне себе полноценную программу. К примеру, первое графическое приложение «SFML works!» можно написать всего за минуту. Ещё одно неоспоримое преимущество — кроссплатформенность: SFML работает под Windows, Linux (только X11, но не Wayland) и Mac, планируется выход под Android.

Кое-что ещё

SFML библиотека используется по большей части небольшими стартапами и программистами, для которых создание игр — хобби. SFML популярен среди небольших команд благодаря тому, что не требует написания больших объёмов кода.

Qt представляет собой целый набор инструментов для быстрого и удобного проектирования GUI. Конечно же, здесь можно писать и игры — почему бы и нет? — но Qt привлекает программистов в основном тем, что она является быстрой, удобной, гибкой и кроссплатформенной. Во многом Qt обогнала даже SFML: библиотека доступна как на Windows, Linux и Mac, так и на мобильных платформах — Windows Mobile, Android и iOS.

Кое-что ещё

Qt расширяет C++ с помощью МОК (Мета-объектного компилятора) и предоставляет дополнительные функции (например, сигналы и слоты). Также имеет платную службу поддержки (как и платную лицензию). Для Qt есть большой выбор IDE: QtDesigner, QtCreator, QDevelop, Edyuk, а также доступна интеграция с Visual Studio, Eclipse и XCode.

Читайте также:  Еврошифер волновой размеры листа цена

Также можно пройти готовый курс по данной библиотеке.

Cairo

Cairo — библиотека для отрисовки векторных изображений под Linux, Windows и Mac OS. К примеру, такой крупный проект, как Mozilla, использует Cairo в браузерном движке Gecko. Также Cairo лежит в основе некоторых операционных систем (MorphOS, AmigaOS) и приложений (InkScape, Synfig, Graphite). При использовании библиотеки будьте готовы к отсутствию русскоязычных ресурсов.

Кое-что ещё

Cairo может взаимодействовать с OpenGL бэкендом с поддержкой GPU, что, конечно, открывает целый список полезных функций.

Cocos2D-X

Кроссплатформенная библиотека Cocos2D-X призванна упростить разработку мобильных игр. Поддерживает все те же платформы, что и Qt. Из плюсов стоит отметить доступность, удобство эксплуатации и создание отдельного конструктора игр, основанного на библиотеке Cocos Creator. В списке игр, основанных на движке, есть всемирно известная BADLAND, работающая на всех доступных платформах.

Кое-что ещё

Если при создании игры вам нужно работать с графикой и анимацией в больших объёмах, то лучше использовать Unity вместо Cocos2D-X. В Unity имеется возможность плавной интеграции с такими инструментами, как Photoshop, Maya или Blender. В Cocos2D-X вся графика добавляется извне и на неё ссылаются из кода.

В Рунете нет уроков по этой библиотеке, но на английском языке есть отличный курс от разработчиков.

Juce — кроссплатформенный фреймворк, предназначенный для создания приложений и плагинов на языке C++.

Документации по Juce много, но не на русском языке. Поэтому можно скачать книгу «Программирование на C++ с JUCE 4.2.x: Создание кроссплатформенных мультимедийных приложений с использованием библиотеки JUCE на простых примерах».

Кое-что ещё

Juce больше популярен среди разработчиков аудио-ПО благодаря набору интерфейсов-оболочек для построения аудио-плагинов.

wxWidgets

wxWidgets — одна из старейших, но в то же время наиболее известных графических библиотек для отрисовки GUI. Её основной плюс — производительность. Если QT использует низкоуровневый код лишь для таких элементов, как кнопки и полосы прокрутки, то wxWidgets для каждой системы свой, и благодаря этому все элементы отображаются максимально похожими на системный стиль.

Кое-что ещё

Важная особенность wxWidgets заключается в использовании «родных» графических элементов интерфейса операционной системы везде, где это возможно. Это существенное преимущество для многих пользователей, поскольку они привыкают работать в конкретной среде, а изменения интерфейса программ часто вызывают затруднения в их работе.

Читайте также:  Где можно сделать фотографии с телефона

В Сети есть урок по работе с библиотекой от её разработчиков.

SDL 2.0

SDL — кроссплатформенная 2D-библиотека, предназначенная для написания приложений (в основном игр). Поддерживаются Windows, Linux, Mac OS, а также Android, Windows Mobile и iOS. Преимущества библиотеки — быстрота, надёжность и лёгкость в эксплуатации. Также в библиотеке реализованы профессиональные инструменты для работы со звуком — это большой плюс при разработке крупных проектов.

Кое-что ещё

Комбинируется с wxWidgets и хорошо интегрируется с OpenGL.

Существует целый цикл уроков, размещённый на Habr.

Пожалуй, одна из самых известных графических библиотек. GTK+ — графический фреймворк, широко применямый во многих системах. Изначально он задумывался как компонент GIMP, но за 20 лет после выпуска первой стабильной версии он нашёл применение в сотнях других приложений.

Сейчас GTK+ — полноценный графический фреймворк, не уступающий тому же QT. Он поддерживает разные языки программирования и продолжает развиваться.

Кое-что ещё

В своё время библиотека создавалась в качестве альтернативы Qt, которая была платной. GTK+ — один из немногих фреймворков, которые поддерживают язык C. Библиотека кроссплатформенная, но есть мнение, что программы на Linux выглядят более нативно, чем на Windows или Mac (GTK+ хорошо поддерживается даже на KDE). Интересно, что из-за некоторых проблем с кроссплатформенностью Wireshark перешла на Qt.

Пример первой программы можно посмотреть на Википедии.

Другие интересные статьи по C++ можно посмотреть у нас на сайте.

Заключение

Выше представлены наиболее популярные технологии для работы с GUI не только на C++, но иногда и на других языках (например, Qt и GTK+). Однако всегда следует учитывать особенности той или иной технологии. Выпишите список функций своего приложения, ещё раз прочитайте описания всех библиотек и фреймворков, и только после этого выбирайте то, что действительно подходит больше всего для проекта.

Я решил попробовать написать программу для распознавания изображений (для курсовика), а если быть точнее — цифр (база MNIST). Почитал что пишут разные люди по этой теме и решил, что чем выбирать абы как и что — надо подобрать хорошую либу, чтобы потом не переписывать 10 раз код и не проклинать себя в плохом выборе.

В какой IDE писать пока тоже не решил — на выбор у меня Borland C++ Builder 6 или MS Visual Studio 2008 Pro || 2010 Express.

Хочется услышать ответ на вопрос какую библиотеку/класс выбрать исходя из следующего:

Читайте также:  Зеркальное панно на стену своими руками

1. Простая установка в описанные IDE или сложная, но хорошо (читай: пошагово) разобранная где-нибудь на офф сайте.

2. Быстрота работы с изображениями

3. Желательно русская документация, можно такой вариант: русская чуток устаревшая (книга, например, или просто сайт) и очень свежая английская

4. Хорошая документация, не просто пару строк о каждой функции, но и описание аргументов, возвращаемых параметров и

5. Обязательно примеры, examples, примеры.

P.S.: если вы где-нибудь видели сравнение либ для работы с изображениями, то поделитесь, пожалуйста. Я выгуглил только пару старых статей, да и ещё там до кучи субъективизма.

  • Вопрос задан более трёх лет назад
  • 15358 просмотров

Честно говоря не очень понял, вам нужна библиотека для работы с графикой или библиотека уже которая заточена под нейронные сети?

Что касается графики, то определённо ImageMagick.

Что касается вашего курсовика, то вот вам в помощь старая статья, но очень понятная.

Ничего не скажу о библиотеке, но расскажу одну историю. Мой хороший друг подрабатывал тем, что писал программы для дипломов и курсовиков. Одна девушка обратилась к нему с аналогичной проблемой — ей задали написать программу распознавания текстов.

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

Вторым шагом было была разбивка строк на знаки, причём, он учёл, что в современных шрифтах ширина разных символов может быть разной.

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

Результат был удивительный — после обучения программа показывала лучшие результаты, чем любые существующие на тот момент системы распознавания текста (1995 год).

Программа имела два недостатка — жесткая привязка к шрифту(ам), на котором(ых) производилось обучение. Чем больше шрифтов понимала программа, тем меньше была точность распознавания.

С тех пор прошло много лет. Жаль, что друг больше никогда не возвращался к этой теме. Его простая программа даже сейчас имела бы смысл для распознавания большого большого текста, напечатанного одним шрифтом, например книг.

Кстати, тоже не понимаю, зачем автору вопроса нужна библиотека для работы с изображениями — используйте монохромный BMP на входе «распознавалки». Смысл курсовика ведь не в работе с графическими библиотеками, а именно в распознавании текста.

Комментировать
113 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector