我有一个下面的CLI,并尝试使用magickwand c实现相同的结果。
一切似乎都是完美的或不知道可能是我错过了什么,但魔术师的sharpmaskimage不是为我工作。检查我的源代码。我还附加了由CLI和C API生成的源代码和两个输出映像。
命令行

convert testsharp.jpg -unsharp 0x1 unsharpC.jpg

C代码
int main(int argc, char const *argv[]) {
    MagickWand * wand;
    wand = NewMagickWand();
    MagickReadImage(wand, "testsharp.jpg");
    MagickUnsharpMaskImage(wand, 0.0, 1.0, 0.0, 0.0);
    MagickWriteImage(wand, "unsharpW.jpg");
    return 0;
}

源图像
c - MagickWand C的MagickUnsharpMaskImage方法中是否存在错误?-LMLPHP
使用CLI输出图像
c - MagickWand C的MagickUnsharpMaskImage方法中是否存在错误?-LMLPHP
使用C输出图像
c - MagickWand C的MagickUnsharpMaskImage方法中是否存在错误?-LMLPHP
ImageMagick版本
版本:ImageMagick 7.0.5-5 Q16 x86_642017-05-23http://www.imagemagick.org

最佳答案

the man
MagickUnsharpMaskImage()锐化图像。我们用给定半径和标准差(sigma)的高斯算子卷积图像。为了得到合理的结果,半径应该大于sigma。使用半径0,然后UnsharpMaskImage()为您选择合适的半径。
强调我的
你称之为传递
而且default value for those parameters are
半径高斯的半径,以像素为单位,不包括中心像素(默认为0)。
sigma高斯的标准偏差,以像素为单位(默认为1.0)。
获取原始图像与添加回原始图像中的模糊图像之间的差的分数(默认值为1.0)。
阈值应用差异量所需的阈值(作为QuantumRange的一部分)(默认值为0.05)。
c代码更正为

MagickUnsharpMaskImage(wand, 0.0, 1.0, 1.0, 0.05);

关于c - MagickWand C的MagickUnsharpMaskImage方法中是否存在错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44180384/

10-15 04:15