このところ、Grad_camをいろいろ試しているが、そこで大活躍なツール、画像合成の記事を書いておこうと思う。
以前、以下の記事で取り上げた。
・【画像合成】OpenCVで積算によりノイズ除去をやってみた♪
【参考】
・Arithmetic Operations on Images@OpenCV
コードは以下のとおり
img1とimg2を入力キーの割合で合成します。6以外の時の合成画像はおまけに置きました。
import cv2
import matplotlib.pyplot as plt
img1 = cv2.imread('total_test_image1_g6.jpg')
# img2 = cv2.imread('total_test_gradcam_g6.jpg')
img2 = cv2.imread('total_test_guided_g6.jpg')
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
cv2.imshow('org1',img1)
cv2.imshow('org2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
a =1
k=0
while True:
dst = cv2.addWeighted(img2,a,roi,1-a,0)
cv2.imshow('dst',dst)
k=cv2.waitKey(0)&0xff
if k ==ord('q'):
cv2.imwrite('results'+str(a)+'.jpg',dst)
break
elif k ==ord('1'):
a = 0.1
elif k ==ord('2'):
a = 0.2
elif k ==ord('3'):
a = 0.3
elif k ==ord('4'):
a = 0.4
elif k ==ord('5'):
a = 0.5
elif k ==ord('6'):
a = 0.6
elif k ==ord('7'):
a = 0.7
elif k ==ord('8'):
a = 0.8
elif k ==ord('9'):
a = 0.9
elif k ==ord('0'):
a = 1
cv2.destroyAllWindows()
結果
キーを1~10まで変えると以下のとおりになりました。
以下はキーが6を押したときのものです。
画素の積(bitwise_and)
import cv2
import matplotlib.pyplot as plt
img1 = cv2.imread('total_test_image1_g6.jpg')
# img2 = cv2.imread('total_test_gradcam_g6.jpg')
img2 = cv2.imread('total_test_guided_g6.jpg')
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
cv2.imshow('org1',img1)
cv2.imshow('org2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
a =1
k=0
while True:
dst = cv2.bitwise_and(img2*a,roi*(1-a)) #,mask = mask_inv)
#dst = cv2.addWeighted(img2,a,roi,1-a,0)
cv2.imshow('dst',dst)
k=cv2.waitKey(0)&0xff
if k ==ord('q'):
plt.imshow(dst)
#cv2.imwrite('results_multiply'+str(a)+'.jpg',dst)
plt.savefig('results_multiply'+str(a)+'.jpg')
plt.pause(1)
plt.close()
break
elif k ==ord('1'):
a = 0.1
elif k ==ord('2'):
a = 0.2
elif k ==ord('3'):
a = 0.3
elif k ==ord('4'):
a = 0.4
elif k ==ord('5'):
a = 0.5
elif k ==ord('6'):
a = 0.6
elif k ==ord('7'):
a = 0.7
elif k ==ord('8'):
a = 0.8
elif k ==ord('9'):
a = 0.9
elif k ==ord('g'):
a = 0.95
elif k ==ord('0'):
a = 1
cv2.destroyAllWindows()
結果
枠が協調されいて、また画像がもう一つだが、一応出来たようです。
2
9
g
まとめ
・どの程度の比で合成するか迷ってましたが、簡単に合成できました
・画素の積は完成度低いですが、まあここから一工夫で使えそうです
・本論はも少し実験重ねてから、次回まとめます