【问题标题】:morphology using Magick++使用 Magick++ 的形态学
【发布时间】:2012-02-17 07:20:49
【问题描述】:
我正在尝试使用我正在编写的 c++ 程序中的 Magick++ 执行形态学。我找不到如何使用 c++ 中的 Morphology 方法。
我正在尝试执行以下操作(我们正在从 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 本身的源代码。
【问题讨论】:
标签:
c++
perl
image-processing
imagemagick
magick++
【解决方案1】:
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
【解决方案2】:
zsalzbank 您给出的部分响应不正确“(这意味着您不能再使用 Magick++ 类)”
Magick++ 和 MagickCore API 旨在相互交互。
你可以这样转换...
MagickCore::Image* img_core = img->image();