【화상 합성】OpenCV에서 원화와 Guided_BackPropagation의 화상 합성♪

요즘, 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


요약



・어느 정도의 비율로 합성할까 헤매고 있었습니다만, 간단하게 합성할 수 있었습니다
・화소의 곱은 완성도 낮습니다만, 뭐 여기로부터 한 궁리로 사용할 수 있을 것 같습니다

・본론은 조금 실험 거듭하고 나서, 다음 번 정리합니다



1

2

3

4

5

7

8

9

좋은 웹페이지 즐겨찾기