【问题标题】:Composition Masking using Python Wand使用 Python Wand 进行合成蒙版
【发布时间】:2013-09-27 03:08:59
【问题描述】:

我正在尝试使用 Python Wand 实现以下 ImageMagick 命令:

convert red_image.png  green_image.png  write_mask.png -composite masked_composite.png

这是它在图像中的示例:

有什么提示吗?

更新:如果有人想知道,这是我的解决方案。注意:不优雅,但有效。

bash_command = "convert "+str(red_image.png)+" "+str(green_image.png)+" write_mask.png -   composite "+str(red_image.png)+str(green_image.png)+".jpg"
os.system(bash_command)

【问题讨论】:

  • 将蒙版放入绿色图像的 alpha 通道,然后与红色图像合成,这样您就只有两个图像要合成。然后你应该能够在 Wand 中做到这一点。您甚至可以将蒙版放入 Wand 中的 Alpha 通道。

标签: python imagemagick wand


【解决方案1】:

解决方案是使用copy_opacity composite operator,它采用黑白源图像并将目标图像的 Alpha 通道替换为其内容。

这是我在项目中使用的apply_mask 函数:

def apply_mask(image, mask, invert=False):
    image.alpha_channel = True
    if invert:
        mask.negate()
    with Image(width=image.width, height=image.height, background=Color("transparent")) as alpha_image:
        alpha_image.composite_channel(
            "alpha",
            mask,
            "copy_opacity",
            0, 0)
        image.composite_channel(
            "alpha",
            alpha_image,
            "multiply",
            0, 0)

首先,我确保要应用蒙版的图像具有 Alpha 通道,并检查是否要反转蒙版。然后我们使用蒙版替换新透明图像的 alpha 通道。我们这样做是为了将这个生成的 Alpha 通道与目标图像上已经存在的任何 Alpha 通道结合起来。如果我们将带有copy_opacity 的蒙版直接应用到我们的图像而无需此中间步骤,它将替换其 Alpha 通道(而不是合并它们),破坏其任何原始 Alpha 通道数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-18
    • 2013-04-15
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多