【画像合成】OpenCVで元絵とGuided_BackPropagationの画像合成♪

このところ、Grad_camをいろいろ試しているが、そこで大活躍なツール、画像合成の記事を書いておこうと思う。

以前、以下の記事で取り上げた。
・[【画像合成】OpenCVで積算によりノイズ除去をやってみた♪](https://qiita.com/MuAuan/items/620755a8613e0457ac80)
【参考】
・[Arithmetic Operations on Images@OpenCV](https://docs.opencv.org/3.1.0/d0/d86/tutorial_py_image_arithmetics.html)

###コードは以下のとおり
img1とimg2を入力キーの割合で合成します。6以外の時の合成画像はおまけに置きました。

```py
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()
```
###結果
キーを１～１０まで変えると以下のとおりになりました。
以下はキーが６を押したときのものです。
![results0.6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/fabeba9d-2c2c-f2dc-8462-f67f012091d2.jpeg)

###画素の積(bitwise_and)
```py
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()
```
###結果
枠が協調されいて、また画像がもう一つだが、一応出来たようです。
２
![results_multiply0.2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/c9c1c002-f8db-52a3-abb5-9d7202202a7d.jpeg)
９
![results_multiply0.9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/b04922af-7e7e-5289-9c62-53de45a169b4.jpeg)
ｇ
![results_multiply0.95.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/860a6eef-5e3b-d0b1-ce59-fb4676218605.jpeg)


###まとめ
・どの程度の比で合成するか迷ってましたが、簡単に合成できました
・画素の積は完成度低いですが、まあここから一工夫で使えそうです

・本論はも少し実験重ねてから、次回まとめます
###おまけ
１
![results0.1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/49d4463f-4b55-9835-a65d-5bf1160e6a86.jpeg)
２
![results0.2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/d6316360-8b1b-762b-053a-fa0e3e0107dd.jpeg)
３
![results0.3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/17e31296-26a4-cf7c-8d01-3ad8ce3c6100.jpeg)
４
![results0.4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/6ca2b589-9b10-1138-d329-8c422f26f7b5.jpeg)
５
![results0.5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/7b9cb904-5fba-c529-ce77-bbc4417cc3a8.jpeg)
７
![results0.7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/1c9364d6-2590-d832-b3e2-8c043bbbf826.jpeg)
８
![results0.8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/656d5eef-cddd-4adf-9c44-0045c270d88f.jpeg)
９
![results0.9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/7123ba52-1cf9-51c0-2948-70d93f998a35.jpeg)