2

我正在尝试使用我正在编写的 c++ 程序中的 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 本身的源代码。

4

2 回答 2

2

看来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

于 2012-01-24T03:52:51.610 回答
1

zsalzbank 您给出的部分响应不正确“(这意味着您不能再使用 Magick++ 类了)”

Magick++ 和 MagickCore API 旨在相互交互。

你可以像这样转换......

MagickCore::Image* img_core = img->image();
于 2013-05-03T22:35:59.177 回答