C++ Magick的形态学&x2B+;匹配命令行转换
我正在尝试复制ImageMagick命令行: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
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),签名很接近,但。。。