【问题标题】:Morphology from Magick++ to match Command line Convert来自 Magick++ 的形态以匹配命令行转换
【发布时间】:2014-02-16 22:36:31
【问题描述】:

我正在尝试复制 ImageMagick 命令行:

Convert In.jpg ( -bias 50% -morphology Convolve LoG:0x1.5 ) Out.jpg

通过 C++ 中的 Magick++ (visual Studio 2010 Express)

我读到形态运算不是 Magic++ 的一部分,所以需要使用 C MagickCore 函数。我无法获得匹配(甚至接近)的输出 ImageMagick 命令行输出。

我正在尝试通过

创建内核
k=MagickCore::AcquireKernelInfo("LoG:0x1.5");

并通过

执行形态
m = MagickCore::MorphologyImage(i, MagickCore::ConvolveMorphology, 3, k, e);

由于缺乏具体信息,我猜测这些方法和参数。 有没有人指导如何从 C++ 完成相同的输出?

【问题讨论】:

  • 迭代次数的默认值为 1。您应该使用 1 而不是 3。
  • 感谢您指出这一点。从仅列出“ssize_t”的智能感知弹出窗口或 stackoverflow 问题中,该参数并不明显:stackoverflow.com/questions/8980165/morphology-using-magick 该帖子是我能找到的有关 Magick++ 形态学操作的唯一信息。我确实在 ImageMagick 源库中看到了一个函数,它指定了一个“interation”参数,但那是用于函数 MagickMorphologyImage(MagickWand *wand, MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel),签名很接近但是......跨度>

标签: c++ imagemagick imagemagick-convert


【解决方案1】:

要在 Magick++ 中完成这些操作需要许多繁琐的步骤,我没有相关文档。内核的创建尤其令人怀疑,因为它以 13x13 的形式出现。

我找到了实现相同目标的另一种方法:使用 MagickCore::ConvertImageComand()。参数与命令行版本相同,输出相同。使用 C++ 中的命令似乎没有问题...

使用命名空间 Magick;
char *args[]={"convert", "In.jpg","(","-bias","50%","-morphology", "convolve", "LoG:0x1.5", ") ","Out.jpg" }; int args_count = 10;

MagickCore::ExceptionInfo *exception = MagickCore::AcquireExceptionInfo();
MagickCore::ImageInfo *image_info = MagickCore::AcquireImageInfo();
(void) strcpy(image_info->filename,"In.jpg");
image = MagickCore::ReadImage(image_info, exception);
  MagickBooleanType status =
   ConvertImageCommand(image_info, args_count, args, NULL, exception);

我宁愿让这个操作产生缓冲区或内存中的图像,而不是写入磁盘,但我想这是另一个问题......

【讨论】:

    【解决方案2】:

    ImageMagick 的下一版本 (6.8.8-7) 将支持 Magick++ API 中的形态。你的命令:

    convert In.jpg -bias 50% -morphology Convolve LoG:0x1.5 Out.jpg
    

    可以这样写:

    Magick::Image img;
    
    img.read("In.jpg");
    img.artifact("convolve:bias", "50%");
    img.morphology(ConvolveMorphology, LoGKernel, "0x1.5");
    img.write("Out.jpg");
    

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2022-01-20
      • 2012-02-17
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多