морфология с использованием Magick ++ - PullRequest
2 голосов
/ 24 января 2012

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

Я пытаюсь выполнить следующее (мы конвертируем из 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 ]

2 голосов
/ 24 января 2012

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

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 голос
/ 04 мая 2013

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

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

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

MagickCore::Image* img_core = img->image();
...