2016-08-31 235 views
1

2枚の画像の色の濃さを失うことなく2枚の画像を重ねる方法を教えてください。OpenCVとPythonを使用して2枚の画像を重ね合わせて表示します。

Iは画像1と画像2を有する:

Iが0.5α及びβを用いて試みたが、それは私の半分の色強度

dst = cv2.addWeighted(img1,0.5,img2,0.5,0) 
とマージ画像を与えます

enter image description here

ですが、アルファチャンネルとベータチャンネルの両方に1を使用しようとすると、マージされたリージョンのみが表示されます。

dst = cv2.addWeighted(img1,1,img2,1,0) 

enter image description here

私は、このような出力を取得する必要があります。あなたが青pixleため、例えばすべての項目を乗算されたアルファを持つ3次元アレイである、あなたの画像を掛ける場合

dst = src1*alpha + src2*beta + gamma 

:実際dstは、以下の式に従って作成され

enter image description here

+0

は、あなたもあなたの元の画像を追加することはできますか? – Kasramvd

+0

私は元のimage1とimage2を追加しました –

答えて

1

[255, 0, 0]と白い[255, 255, 255]があります。マトリクスを一緒に追加する場合、画像の元の色を表示するには、白のピクセルを黒に変換して値をすべてゼロにする必要があります。したがって、単に白いピクセルを見つけ、先進のnumpyインデックスをimg1[img1[:, :, 1:].all(axis=-1)]にしてゼロに変換することができます。

import cv2  

img1 = cv2.imread('img1.png') 
img2 = cv2.imread('img2.png') 

img1[img1[:, :, 1:].all(axis=-1)] = 0 
img2[img2[:, :, 1:].all(axis=-1)] = 0 

dst = cv2.addWeighted(img1, 1, img2, 1, 0) 

cv2.imshow('sas', dst) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

結果:

enter image description here

+0

'dst = img1 + img2'は白を黒にした後にうまくいくはずです。 – Miki

+0

@Miki実際、OPの意図に近い一般的な答えを出したいと思っています。 – Kasramvd

+0

ありがとうございました!しかし、どのように私はdstの白に黒を設定することができますか?どうもありがとうございます! –

関連する問題