Как обработать изображения jpg с c/c ++ наиболее легко?

Я хочу выполнить итерации по каждому пикселю, раскрашивают a jpg изображение формата,

к какой библиотеке я должен обратиться сделать это так, чтобы код мог быть максимально коротким?

7
задан user198729 15 July 2010 в 11:27
поделиться

6 ответов

Я могу вспомнить ImageMagick или CImg . Вот вам учебное пособие по CImg . Они абстрагируются от многих деталей декомпрессии и просто дают вам сетку для работы.

Если вы используете CImg, вам нужно только использовать вызов data . Вероятно, вы можете сделать что-то вроде:

CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10
unsigned char pixel = *ptr;
13
ответ дан 6 December 2019 в 10:47
поделиться

jpeglib - довольно удобная библиотека для игры с jpeg.

0
ответ дан 6 December 2019 в 10:47
поделиться

для доступа к информации на уровне пикселей. libjpeg & JAI Image I / O Tools должно быть достаточно. JAI предоставляет больше возможностей для обработки изображений. Все параметры позволяют читать / записывать пиксели в файл изображения.

libjpeg В C / C ++. Он доступен для Linux и Windows. Раньше я использовал его в Linux, и он хорошо работает. Однако, если вы хотите обрабатывать другой тип изображения, вам может потребоваться получить другой пакет и изучить другой интерфейс API.

Инструменты ввода-вывода изображений Java Advanced Imaging (JAI) Не забудьте загрузить java-пакет для конкретной платформы, потому что для другой системы есть специальная оптимизация. Он охватывает не только JPG, но и другие форматы изображений с точно таким же интерфейсом API.

Java Advanced Imaging (JAI) Если вы планируете выполнять более продвинутый уровень обработки, например, с помощью оператора изображения и фильтра, вы можете использовать это. Этот пакет обеспечивает более высокий уровень функциональности, чем JAI Image I / O Tools.

РЕДАКТИРОВАТЬ: удалить 1, 2 и 3, как предлагается

0
ответ дан 6 December 2019 в 10:47
поделиться

Я бы использовал Allegro Game Library http://liballeg.org/Allegro , она простая / с открытым исходным кодом / бесплатная / мультиплатформенная, и вы можете итерировать пиксель за пикселем, если хотите

1
ответ дан 6 December 2019 в 10:47
поделиться

В Qt есть класс QImage:

QImage i("input.jpg");
int x, y;
for (y = 0; &lt; i.height(); ++y) {
   for (x = 0; x &lt; i.width(); ++x) {
      doSomethingWith(i.pixel(x, y));
   }
}
4
ответ дан 6 December 2019 в 10:47
поделиться

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

0
ответ дан 6 December 2019 в 10:47
поделиться