在命令行中使用+ 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操作。
有人可以阐明这一点吗?
答案 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])
...