使用python魔杖的图像合成结果不正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python魔杖的图像合成结果不正确相关的知识,希望对你有一定的参考价值。

我有3个图像需要复合在一起,但结果与AfterEffect合成的原始结果不一样。在AfterEffect中,我需要使用32位图像深度来做一些复合,我已经尝试了ImageMagick,结果是正确的,我可以在批处理命令中做到但我有大量的层需要做,​​并且处理时间很长,然后我在python中做它Wand认为我可以加快时间,但我坚持这个,复合计算看起来钳位所有负值。

如何使用魔杖或其他库获得正确的结果?我也尝试PythonMagick和pgmagick但结果也是如此。谢谢

我正在使用Wand 0.5.1和ImageMagick版本是ImageMagick-7.0.8-Q16-HDRI(64位),

这是我的代码和示例:

from wand import image as wi
from wand import api 

img = wi.Image()
img.read(filename='D:225_red.jpg')
img.convert('TIFF')
img.depth=24
api.library.MagickSetOption(img.wand,'quantum:format','floating-point')
api.library.MagickSetOption(img.wand,'compose:clamp','off')

img2=wi.Image()
img2.read(filename='D:225_pink.jpg')
img2.convert('TIFF')
img2.depth=24
api.library.MagickSetOption(img2.wand,'quantum:format','floating-point')
api.library.MagickSetOption(img2.wand,'compose:clamp','off')

img3=wi.Image()
img3.read(filename='D:225_blue.jpg')
img3.depth=24
api.library.MagickSetOption(img3.wand,'quantum:format','floating-point')
api.library.MagickSetOption(img3.wand,'compose:clamp','off')

img.composite_channel('all_channels',img2 , 'minus_src')
img.composite_channel('all_channels',img3 , 'plus')
img.format = 'TIFF'
img.save(filename='D:225_test.tif')

AE的结果:

enter image description here

我的代码的结果:

enter image description here

答案

我怀疑这个问题与操作顺序有关。试试以下......

from wand.image import Image

with Image(filename='D:225_red.jpg') as img:
    img.options['quantum:format'] = 'floating-point'
    img.options['compose:clamp'] = 'off'
    with Image(filename='D:225_blue.jpg') as blue:
        img.composite_channel('all_channels', blue, 'plus')
    with Image(filename='D:225_pink.jpg') as pink:
        img.composite_channel('all_channels', pink, 'minus_src')
    img.save(filename='D:225_test.tif')

以上是关于使用python魔杖的图像合成结果不正确的主要内容,如果未能解决你的问题,请参考以下文章

使用魔杖坐标的图像地图软件

python颜色压缩的结果颜色比保存颜色深

使用Wand和Python生成样条曲线

Imagemagick魔杖使用深度不像命令行

python抓取m3u8文件,并提取.ts文件合成视频

模仿OpenCV中的“魔杖”photoshop工具