4

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)
4

1 に答える 1

0

copy_opacity解決策は、コンポジット オペレータを使用することです。これは、白黒のソース イメージを取得し、宛先イメージのアルファ チャネルをそのコンテンツに置き換えます。

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)

まず、マスクを適用する画像にアルファ チャネルがあることを確認し、マスクを反転するかどうかを確認します。次に、マスクを使用して新しい透明イメージのアルファ チャネルを置き換えます。これを行うのは、この結果のアルファ チャネルを、宛先イメージに既に存在する任意のアルファ チャネルと結合できるようにするためです。この中間ステップなしでマスクをcopy_opacity画像に直接適用すると、アルファ チャネルが (マージではなく) 置き換えられ、元のアルファ チャネル データが破壊されます。

于 2017-03-10T05:02:49.647 に答える