imagemagick — API-интерфейс Graphicsmagick C ++

Я хочу использовать C ++ API для graphicsmagick

Мне нужно конвертировать данные изображения непосредственно из OpenCV и использовать graphicsmagick сохранить файл как tiff с компрессией группы 4

Командная строка

gm convert input -type bilevel -monochrome -compress group4 output.tif

Может ли кто-нибудь предоставить некоторый код (см. Приведенную выше командную строку), чтобы просто преобразовать вывод из OpenCV в tiff с компрессией группы 4

Я новичок в C ++ 🙂

Я пытаюсь сделать graphicsmagick Работа. Нашел очень простой код в документации

Я не могу найти Magick++.h

locate /Magick++.h ничего не возвращает

но graphicsmagick установлен

# gm -version
GraphicsMagick 1.3.20 2014-08-16 Q8 http://www.GraphicsMagick.org/
/*
*  Compile
*  g++ gm_test.cpp -o gm_test `GraphicsMagick++-config --cppflags --cxxflags --ldflags --libs`
*/

#include <Magick++.h>

using namespace std;
using namespace Magick;

int main(int argc, char **argv){
InitializeMagick(*argv);
Image image( "100x100", "white" );
image.pixelColor( 49, 49, "red" );
image.write( "red_pixel.png" );
return 0;
}
# g++ gm_test.cpp -o gm_test `GraphicsMagick++-config --cppflags --cxxflags --ldflags --libs`
-bash: GraphicsMagick++-config: command not found
gm_test.cpp:6:22: fatal error: Magick++.h: No such file or directory
#include <Magick++.h>
^
compilation terminated.

7

Решение

Обновленный ответ

Попробуйте найти файл с именем GraphicsMagick-config в каталоге, где вы установили GraphicsMagick, вот так:

find /usr -name "GraphicsMagick-config"

Когда вы найдете это, вы можете попросить его сообщить вам, что компилятор включает флаги и флаги компоновщика, например так:

/usr/some/path/GraphicsMagick-config --cflags --libs

Затем вы можете скомпилировать с:

gcc $(/usr/some/path/GraphicsMagick-config --cflags --libs) somefile.c -o somefile

Оригинальный ответ

Найдите в каталоге, где вы установили GraphicsMagick, файл, заканчивающийся на .pc, какой pkg-config файл, например

find /usr/local -iname "graphic*.pc"

Затем передайте этот файл pkg-config чтобы получить CFLAGS и LIBS, вы должны использовать для компиляции. Итак, если ваш graphicsmagick.pc в /usr/local/Cellar/graphicsmagick/1.3.23/lib/pkgconfig/GraphicsMagick.pc, используйте:

pkg-config --cflags --libs /usr/local/Cellar/graphicsmagick/1.3.23/lib/pkgconfig/GraphicsMagick.pc

что даст вам это:

/usr/local/Cellar/graphicsmagick/1.3.23/lib/pkgconfig/GraphicsMagick.pc
-I/usr/local/Cellar/graphicsmagick/1.3.23/include/GraphicsMagick -L/usr/local/Cellar/graphicsmagick/1.3.23/lib -lGraphicsMagick

Тогда вы бы скомпилировали с:

gcc $(pkg-config --cflags --libs somefile.c -o somefile
5

Другие решения

я не знаю, полезно ли это, в последний день у меня та же ошибка: нет волшебства ++. h, когда я компилирую ImageMagick (не graphicsmagick).
поэтому я следую инструкциям на официальном сайте, чтобы переустановить ImageMagick, и, наконец, у меня получится.

1 http://www.imagemagick.org/script/install-source.php
2 http://www.imagemagick.org/script/magick++.php

я загружаю последний исходный код (ImageMagick6.9) в centOS-6.5
и затем ./configure, make, make install.
Я надеюсь, что это полезно.

0

На Ubuntu GraphicsMagick++-config Программа, которую вы используете для получения флагов компиляции, является частью того же пакета, который включает Magick ++. h. Попытка запустить это скажет вам, где его найти:

$ g++ gm_test.cpp -o gm_test `GraphicsMagick++-config --cppflags --cxxflags --ldflags --libs`
The program 'GraphicsMagick++-config' is currently not installed. You can install it by typing:
sudo apt-get install libgraphicsmagick++1-dev
gm_test.cpp:6:22: fatal error: Magick++.h: No such file or directory

компиляция прекращена.

Так что делай, что говорит

$ sudo apt-get install libgraphicsmagick++1-dev

Попробуйте снова скомпилировать, и вы получите другую ошибку, потому что GraphicsMagick++-config ссылка на удаленную и ненужную библиотеку:

$ g++ gm_test.cpp -o gm_test `GraphicsMagick++-config --cppflags --cxxflags --ldflags --libs`
/usr/bin/ld: cannot find -lwebp
collect2: error: ld returned 1 exit status

Вы можете вручную указать библиотеки libs и compile и link:

$ g++ gm_test.cpp -o gm_test -I/usr/include/GraphicsMagick -Wall -g -fno-strict-aliasing -O2 -pthread  -lGraphicsMagick++ -lGraphicsMagick -ljbig
$ ./gm_test

Или вы можете установить необходимую библиотеку:

$ sudo apt-get install libwebp-dev
0
По вопросам рекламы [email protected]