img1(=100×100×3のカラー画像)に
img2(=100×100の2値画像)の白の部分(=255)に色付けを行い、
img1の上に半透明で重ね合わせしたいです。
コード
img1 = cv2.imread("image.jpg") b_channel, g_channel, r_channel = cv2.split(img1) alpha_channel = np.ones(b_channel.shape, dtype=b_channel.dtype) * 255 img_BGRA = cv2.merge((b_channel, g_channel, r_channel, alpha_channel)) img2 = cv2.imread('mask.jpg')#(100*100) img2_4d = np.zeros((100, 100, 4)) #透過画像に変換 for i in range(0, 100): for j in range(0, 100): if img2[i][j] == 0: img2_4d[i][j] = [0, 0, 0, 0] else: img2_4d[i][j] = [0, 0, 255, 100]#半透明の赤色にしたい result = img2_4d + img_BGRA cv2.imwrite("result.png", result)
上記のコードでエラーは吐き出さないのですが、
img2_4d[i][j] = [0, 0, 255, 100]#半透明の赤色にしたい
の行の”100”の部分の値を変えても、透明度が変化しません。
[0, 0, 255]の部分を変化させたら色は変化するのですが、アルファチャンネルの部分だけ機能しなくなっています。
どこかに問題があるのか、また違ういい方法をご存じの方がいらっしゃいましたら、
教えてください。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/08 08:34 編集
2020/12/08 08:35
2020/12/11 05:24