OpenCV/OpenCV 강좌
OpenCV Python 알파 블렌딩 : 이미지 투명하게 만들어 합치기
webnautes
2023. 10. 20. 06:50
반응형
OpenCV Python 알파 블렌딩을 사용하는 예제입니다.
2023. 7. 16 최초작성
코드 설명이 필요하시면 영상을 참고하세요.
사용한 이미지입니다.
밤풍경
기타치는 고양이
https://pixabay.com/ko/illustrations/고양이-기타-음악-명음-7631143/
밤풍경 이미지와 빈 이미지에 노란색 원을 그린 것을 합성하려고 합니다. 본 포스트에서는 addWeighted함수를 사용하기 때문에
두 이미지의 크기가 동일해야 합니다.
노란색 원의 투명도를 조정하여 두 이미지를 합성한 결과입니다.
사용한 코드입니다.
https://bit.ly/webnautes-230716-1
import cv2 import numpy as np img1 = cv2.imread('milky-way-4526277_1280.jpg') h, w, c = img1.shape img2 = np.zeros((h, w, 3), dtype=np.uint8) cv2.circle(img2, (int(w/2), int(h/3)), 100, (0, 255, 255), -1) if c == 3: img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2BGRA) img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2BGRA) desired_alpha = 45 alpha = desired_alpha / 255.0 result = cv2.addWeighted(img1, 1, img2, alpha, 0) source = cv2.hconcat([img1, img2]) cv2.imshow('Source', source) cv2.imshow('Result', result) cv2.waitKey(0) cv2.destroyAllWindows() |
이번엔 다음 링크에 있는 배경이 투명한 이미지를 추가로 사용해봅니다.
https://pixabay.com/ko/illustrations/고양이-기타-음악-명음-7631143/
원본 이미지 입니다.
합성한 결과입니다.
전체 코드입니다. https://bit.ly/230716-2
import cv2 import numpy as np img1 = cv2.imread('milky-way-4526277_1280.jpg') img2 = cv2.imread('cat-7631143_640.png', cv2.IMREAD_UNCHANGED ) h, w, c = img2.shape roi_img1 = img1[100:100+h, 100:100+w] h, w, c = img1.shape if c == 3: roi_img1 = cv2.cvtColor(roi_img1, cv2.COLOR_BGR2BGRA) desired_alpha = 90 alpha = desired_alpha / 255.0 result = cv2.addWeighted(roi_img1, 1, img2, alpha, 0) source = cv2.hconcat([roi_img1, img2]) cv2.imshow('Source', source) cv2.imshow('Result', result) cv2.waitKey(0) cv2.destroyAllWindows() |
반응형