2012-01-23 9 views
2

Я пытаюсь выполнить морфологию с помощью Magick ++ из программы на C++, которую я пишу. Я не могу найти, как использовать методы Морфологии из C++.морфология с помощью Magick ++

Я пытаюсь выполнить следующие действия (мы конвертируем из Perl):

$q=Image::Magick->new; 
$q->Read("blah.jpg"); 
$q->Morphology(method => 'Close', kernel => 'Diamond:4'); 

Может это не может быть сделано только с Magick ++?

Я нашел этот сайт, http://www.imagemagick.org/api/MagickCore/morphology_8h.html, , но я не уверен, если это только исходный код самого ImageMagick.

ответ

2

Кажется, что Magick ++ не имеет возможности выполнять морфологию. Вместо этого, вызовы библиотек MagickCore должны использоваться (что означает, что вы не можете использовать Магический ++ классов больше):

ExceptionInfo *e; 
ImageInfo *ii; 
Image *i; 

e = AcquireExceptionInfo(); 
ii = CloneImageInfo((ImageInfo *) NULL); 

strcpy(ii->filename, vm["input"].as<string>().c_str()); 
i = ReadImage(ii, e); 
i = MorphologyImage(i, CloseMorphology, 3, AcquireKernelInfo("Diamond:4"), e); 

Это более сложное, и нет никакой обработки ошибок, как в Magick ++, но это работает.

Чтобы увидеть все доступные в библиотеке MagickCore, посмотрите здесь: http://www.imagemagick.org/api/MagickCore/index.html

1

zsalzbank часть ответа вы дали неверен «(что означает, что вы не можете использовать классы Magick ++ больше)»

API Magick ++ и MagickCore разработаны для взаимодействия друг с другом.

Вы можете конвертировать как так ...

MagickCore::Image* img_core = img->image(); 
Смежные вопросы