python - 一种在 Wand 中执行 +level ImageMagick 操作的方法?
问题描述
在命令行中使用 +level ImageMagick 运算符 ( https://imagemagick.org/script/command-line-options.php#level ) 将生成一个输出图像,其中输入图像的通道值被压缩到指定范围。
例如,以下 ImageMagick 命令将导致输出像素强度值出现在总像素值范围的 45% 到 70% 之间。
magick input.jpg +level 45%,70% output.jpg
你如何在 Wand 中执行 +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 运算符之间存在密切关系。
我不知道如何在 Wand 中进行 +level ImageMagick 操作。
有人可以解释一下吗?
解决方案
抱歉,我不太了解 Wand 语法。也许有人可以添加到这个答案或发布另一个提供正确语法的答案。
但是您可以使用带有参数的 wandfunction
命令实现与 +level 的等价polynomial
,其中多项式参数等价于方程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 值。
对 Wandfunction
语法的猜测类似于:
from wand.image import Image
with Image(filename='yourimage.suffix') as img:
a = 0.25
b = 0.45
img.function('polynomial', [a, b])
...
推荐阅读
- google-apps-script - 如何使用 Google My Business API 创建帖子 - Google Apps 脚本
- python - 尝试制作二维随机游走函数,为什么会出现“+ 的不支持的操作数类型:'float' 和 'NoneType'”错误?
- list - 如何遍历列表内的列表?
- javascript - 查找2个数组之间的数据值发生变化的索引位置
- python-3.x - 使用自定义模型 fo django djoser
- python - Tweepy 库不显示数据
- python - Visual Studio Code Python 调试器不会触发子文件夹文件中的断点
- javascript - js根据嵌套对象过滤掉item
- django - 如何在 forms.py Django-Allauth 中添加图片字段
- javascript - 我什么时候应该调用自定义钩子而不违反任何钩子规则?