一种在魔杖中执行+ level ImageMagick操作的方法?

时间:2019-03-11 20:14:26

标签: python imagemagick wand

在命令行中使用+ level ImageMagick运算符(https://imagemagick.org/script/command-line-options.php#level)将产生输出图像,并将输入图像的通道值压缩到指定范围。

例如,以下ImageMagick命令将使输出像素强度值出现在总像素值范围的45%至70%之间。

  

magick input.jpg + level 45%,70%output.jpg

您如何在魔杖中执行+ level ImageMagick操作?

wand.image.BaseImage.level()(http://docs.wand-py.org/en/0.5.1/wand/image.html#wand.image.BaseImage.level)似乎执行-level ImageMagick操作。

根据https://imagemagick.org/script/command-line-options.php#level的规定,-level和+ level ImageMagick运算符之间存在密切关系。

我不知道如何在魔杖中执行+ level ImageMagick操作。

有人可以阐明这一点吗?

1 个答案:

答案 0 :(得分:1)

对不起,我不太了解Wand语法。也许这样做的人可以添加到此答案中,或发布另一个提供正确语法的答案。

但是,您可以使用带有参数function的wand polynomial命令来实现等价于+ level的功能,其中多项式参数等于等式a*x+b。参见http://docs.wand-py.org/en/0.5.1/wand/image.html

您必须根据自己的值和以下等式计算a和b才能达到+ level的水平。

a * X + b = Y

当X = 0时,则Y = 0.45。

当X = 1时,则y = 0.70。

所以我们有两个线性方程需要求解。

0 * a + b = 0.45

1 * a + b = 0.70

从顶部方程式开始,您已经

b = 0.45

将b代入底部方程式并获得

a + 0.45 = 0.70-> a = 0.25

然后在ImageMagick中使用

convert image.suffix -function polynomial "0.45, 0.25" result.suffix


参见https://imagemagick.org/Usage/transform/#function_polynomial

在Wand函数中,您需要选择多项式,然后提供上面的a和b值。

对魔杖function语法的猜测将是这样的:

from wand.image import Image
with Image(filename='yourimage.suffix') as img:
   a = 0.25
   b = 0.45
   img.function('polynomial', [a, b])
...