Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Magick的形态学&x2B+;匹配命令行转换_C++_Imagemagick_Imagemagick Convert - Fatal编程技术网

C++ Magick的形态学&x2B+;匹配命令行转换

C++ Magick的形态学&x2B+;匹配命令行转换,c++,imagemagick,imagemagick-convert,C++,Imagemagick,Imagemagick Convert,我正在尝试复制ImageMagick命令行: Convert In.jpg ( -bias 50% -morphology Convolve LoG:0x1.5 ) Out.jpg < >通过C++中的MaGix++(Visual Studio 2010 Express) 我已经读到形态运算不是Magic++的一部分,因此需要使用C MagickCore函数。我无法获得与之匹配(甚至接近)的输出 ImageMagick命令行输出 我正在尝试通过创建内核 k=MagickCore::Acquir

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

Convert In.jpg ( -bias 50% -morphology Convolve LoG:0x1.5 ) Out.jpg
< >通过C++中的MaGix++(Visual Studio 2010 Express)

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

我正在尝试通过创建内核

k=MagickCore::AcquireKernelInfo("LoG:0x1.5");
并通过

m = MagickCore::MorphologyImage(i, MagickCore::ConvolveMorphology, 3, k, e);
我猜测这些方法和参数是由于缺乏关于细节的信息。
是否有人指导如何实现C++中的相同输出?

,以完成MaGik++中的这些操作需要许多乏味的步骤,我没有文档。内核的创建尤其可疑,因为它是13x13

我找到了实现相同目标的另一种方法:使用MagickCore::ConvertImageComand()。参数与命令行版本相同,输出相同。使用C++命令似乎没有问题……/P> 使用名称空间Magick
char*args[]={“convert”,“In.jpg”,“In.jpg”,“Out.jpg”,“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);

我更希望此操作产生缓冲区或内存映像,而不是写入磁盘,但我想这是另一个问题…

下一版本的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");

迭代次数的默认值为1。你应该用1而不是3。谢谢你指出这一点。从简单列出“ssize_t”的intellisense弹出窗口或stackoverflow问题中,该参数并不明显:这篇文章是我从Magick++中找到的唯一有关形态学操作的信息。我确实在ImageMagick源代码库中看到了一个函数,它指定了一个“交互”参数,但这是函数MagickMorphologyImage(MagickWand*wand,MorphologyMethod方法,const ssize_t iterations,KernelInfo*kernel),签名很接近,但。。。