Где можно найти _математические_ формулы для создания различных эффектов (сепии, оттенков серого и проч)?
Имеет ли Qt готовые функции для применения эффектов? Умеет ли он работать с изображениями попиксельно, чтобы применять написанные по формулам эффекты?
Если не умеет, то существуют ли кроссплатформенные фреймворки для С++, которые позволят работать с изображениями попиксельно?
P.S.: необходимо написать несколько эффектов, которые можно было бы применить к изображениям, полученным с камеры помощью openCV, однако хотелось бы в будущем эти же формулы применять к обычным изображениям, полученным из файлов.
Решение:
1) С математикой помогут Гонсалес Р. и Вудс Р.
2) Готовые эффекты есть в QGraphicsEffect, а QImage::bits() для работы с масивом битов.
3) Из иных библиотек в помощь можно взять libpng, libjpeg, ImageMagic и т.п.
А openCV объясняется довольно просто: на данный момент это довольно академическая задача, следует сразу после поверхностного изучения openCV. И для более наглядного отображения того или иного эффекта вполне себе подходит изображение в вебки, тем более получить какой-нибудь QImage с неё не составляет никакого труда. В дальнейшем будет происходить работа со статичными картинками, ну и такать за собой openCV, конечно же, смысла потом не будет.
Если нужно очень много разных форматов изображений поддерживать, то чтобы самому не писать обертки, можно, например, ImageMagic использовать.
А вообще, хорошо поставленный вопрос содержит в себе уже половину ответа!
Повторюсь, задача большей частью академическая. ImageMagic хорош, есть много готовых решений, безусловно, но в данный момент интересует написание именно собственных алгоритмов.
Я имел в виду использование IM лишь как интерфейса ко всему полчищу библиотек: libjpeg, libpng, libtiff, libgif…
Хотя, конечно, можно все это сделать и вручную (если задача однобокая и не нужно поддерживать 100500 форматов изображений, это, конечно, лучше, чем чужую библиотеку-обертку использовать).