2010-06-06 2 views

ответ

9

Вы можете использовать библиотеку Boost GIL. Он чрезвычайно мощный и универсальный и может действительно удовлетворить все ваши потребности. (ну, да, это толчок :).

11

Magick++ может помочь. Это библиотечная версия ImageMagick.

2

Очень хорошая библиотека GD2

Эта библиотека имеет несколько языков привязок, в том числе C (который совместим с C++, конечно). Легко построить GD как статическую или динамическую библиотеку с фактически любым компилятором C++, включая GCC и Visual C++, а также предварительно созданные двоичные файлы доступны через Интернет. В отличие от библиотеки изображений Boost, она позволяет загружать/сохранять изображения из/в память, а не только на жесткий диск.

+1

Я считаю, что повышение GIL также позволяет записывать/читать в/из памяти. – jiggunjer

9

Все вышеуказанные варианты должны быть в состоянии сделать то, что вам нужно.

Я хотел бы добавить OpenCV в список. Это быстрая кросс-платформенная библиотека компьютерного зрения с обширной загрузкой изображений, сохранением и обработкой. Он написан на C, но у него есть сплошной интерфейс C++, который я использовал в прошлом.

Это, как говорится: Reading/writing PPMs is straight-forward, так что если вам нужно только читать и порождать, вы должны обязательно подумать об этом. Это привело бы к чтению байтов PPM в память, оттенков серого путем усреднения цветовых каналов RGB (обратите внимание, что усреднение каналов RGB - это один, очень простой, метод для оттенков серого, есть more), затем порог и запись.

6

Simd Library Это бесплатная библиотека обработки изображений с открытым исходным кодом, предназначенная для программистов на C и C++. Он предоставляет множество полезных алгоритмов высокой производительности для обработки изображений, таких как: преобразование формата пикселей, масштабирование изображения и фильтрация, извлечение статистической информации из изображений, обнаружение движения, обнаружение объектов (каскады классификаторов HAAR и LBP) и классификация, нейронная сеть.

Алгоритмы оптимизированы с использованием различных расширений SIMD CPU. В частности, библиотека поддерживает следующие расширения процессора: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 и AVX-512 для x86/x64, VMX (Altivec) и VSX (Power7) для PowerPC, NEON для ARM.

В Simd Library есть API C, а также содержит полезные классы и функции C++ для облегчения доступа к C API. Библиотека поддерживает динамические и статические ссылки, 32-битные и 64-битные компиляторы Windows и Linux, MSVS, G ++ и Clang, MSVS и CMake.

P.S. Я участвую в разработке этого проекта.

+0

Кажется, классная библиотека! Вы тоже автор?Если это так, вы должны, вероятно, упомянуть об этом в ответе (см. [Раскрытие принадлежности] (http://stackoverflow.com/help/behavior)) –

+0

Я не знал этого правила. – ErmIg

+0

В библиотеке Simd есть функция, которая объединила бы два изображения по вертикали, чтобы (500x500, 500x500) становилось (500x1000)? Я еще не изучил C++, и я пытаюсь найти библиотеку, которая может это сделать (для использования в android). Можете ли вы помочь – rupinderjeet

2

Я хотел бы добавить VIPS в список. Библиотека особенно подходит для машин со многими процессорами. Для сравнения см. Тесты here.

3

The CImg Library также является популярным выбором. Он действительно прост в использовании, облегчен и уже имеет множество базовых и продвинутых операторов обработки изображений.

Смежные вопросы