形态学使用Magick ++

时间:2012-01-23 23:34:09

标签: c++ perl image-processing imagemagick magick++

我正在尝试使用Magick ++从我正在编写的c ++程序中执行形态学。我找不到如何使用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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

zsalzbank你给出的回复部分不正确&#34;(这意味着你不能再使用Magick ++课程了)&#34;

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

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

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