Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ Чтение файла изображения

Роман Protocol Мыслитель (8562), закрыт 6 лет назад
Всем привет!
Чем (как) можно прочитать на C++ в проекте файл изображения, например, *.jpg?
Нужно прочитать картинку, записать её интенсивность свечения пикселов RGB в матрицу, там выполнить коррекцию по заданной формуле и сохранить в новый файл картинки.
Всем спасибо за ответы!
Лучший ответ
Caleb Ученик (173) 6 лет назад
BMP лучше используй, там можно и без библиотек. Ну или SFML, он поддерживает почти все форматы.

#include "SFML/Image.hpp"

sf::Image img;
img.loadFromFile("image.jpg");
sf::Color c = img.getPixel(15, 15);
printf("RGB(%d,%d,%d) on X(%d), Y(%d)", c.r, c.g, r.b, 15, 15);
Роман ProtocolМыслитель (8562) 6 лет назад
Скачал пакет SFML-2.4.2. Поместил эту папку в проект рядом с Sourse.cpp. Указал путь подключения #include "SFML-2.4.2/include/SFML/Graphics/Image.hpp" выдаёт ошибку 1>c:\users\роман\source\repos\project14\project14\sfml-2.4.2\include\sfml\graphics\image.hpp(31): fatal error C1083: Не удается открыть файл включение: SFML/Graphics/Export.hpp: No such file or directory
Я то - то не так сделал?
Caleb Ученик (173) Надо поместить SFML в папку include для visual studio.
Роман ProtocolМыслитель (8562) 6 лет назад
Вот строка 31 из файла *.hpp
#include < SFML/Graphics/Export.hpp >
Роман ProtocolМыслитель (8562) 6 лет назад
Разместил по адресу source\repos\Project14\Project14\SFML\Graphics
Такая же ошибка
Остальные ответы
Speed (Demon On Wheels) Racer Просветленный (30538) 6 лет назад
надо использовать библиотеки типа

jpeglib
libpng

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

bmp tga dds можно грузить вручную.

надо смотреть какой формат пикселя.

если картинка например 16 бит, то придётся вручную смещать биты и преобразовывать в цвет (если цель иметь картинку в формате RGB).

вс
Роман ProtocolМыслитель (8562) 6 лет назад
Я скачал пакет библиотеки jpeg-9a папка. Как его подключить?
Speed (Demon On Wheels) Racer Просветленный (30538) нужно исходные коды перекинуть в проект, чтобы они компилировались в программу.
Чебуратор Мыслитель (8449) 6 лет назад
Советую скачать сразу библиотеку с большим числом форматов, например SDL2_image c готовыми бинарниками для VS, где не нужно собирать либу, просто подключить прагмой #pragma comment(lib, "SDL2_image.lib") . У библиотеки есть зависимости от libpng,libjpeg,libtiff,zlib,libwebp - но готовая сборка использует их как внешние модули, если нужна статическая сборка придется собирать вручную со всеми зависимыми либами, либо использовать SFML, как описал чел выше...
Роман ProtocolМыслитель (8562) 6 лет назад
#pragma comment(lib, "SDL2_image.lib") прописал. А куда помещать скаченную папку SDL2_image-2.0.2 в проекте?
Чебуратор Мыслитель (8449) Нужно качать именно под вкладкой Development Libraries: ссылка с VC на конце. Из подпапки lib файл с расширением .lib переместить в папку, где VC ищет библиотеки (флаг LIBPATH вроде, где-то настраивается внутри VC или проекта), dll-ки нужно перемещать либо туда где будет лежать исполняемый файл вашего проекта, либо в подпапку \bin корневой папки VC.
Похожие вопросы