본문 바로가기
- Python/OpenCV

[OpenCV] Image Weighted Blending 이미지 가중치 블렌딩

by david_동근 2025. 5. 21.

 
이미지 가중치 블렌딩 기능으로 위와 같은 이미지의 블렌딩을 구현해 보았습니다.
이미지 소스 출처 : https://minecraft.fandom.com/wiki/Minecraft_Wiki
 

Import 및 읽어오기

import cv2

 
가장 먼저 CV 라이브러리를 불러옵니다.

win_name = "Steve Skeleton Weighted Blending"
image1 = cv2.imread("steve.png", cv2.IMREAD_COLOR)
image2 = cv2.imread("skeleton.png", cv2.IMREAD_COLOR)

 
win_name : 창의 이름을 불러옵니다.
image1, 2 : 필요한 이미지 2개 (steve.png, skeleton.png)를 IMREAD_COLOR 키워드로 읽어옵니다.
 

함수 정의하기

def onChange(pos):
    alpha = pos / 255 # range는 0 ~ 255 로 할 거에용
    result = cv2.addWeighted(image1, 1 - alpha, image2, alpha, 0)
    cv2.imshow(win_name, result)

 
Trackbar(슬라이더)를 움직일 때마다 호출되게 할 콜백함수 입니다.
alpha : 이미지2의 가중치입니다. 0이면 image1(steve)만 보이고, 1이면 image2(skeleton)만 보입니다.
1 - alpha 로 하면 image1 의 weight 입니다.
cv2.addWeighted()는 아래 공식과 같이 이미지를 섞(조합)는 다고 합니다.

result = image1 * (1 - alpha) + image2 * alpha

 

결과 출력하기

Trackbar가 필요하기 때문에, cv2.createTrackbar("트랙바 이름", 적용할 창, 값, 카운트, 메서드) 를 사용합니다.

cv2.imshow(win_name, image1)
cv2.createTrackbar("Xray", win_name, 0, 255, onChange)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

Result

 
 


 
폴더 정리하다 예전에 공부한 거 발견해서 올려봤습니다!
개인적으로 파이썬은 좋아하지 않아서 복습도 할겸 천천히 정리해봤어용 ㅎㅎ
그럼 오늘도 좋은 하루 되세요~ O(≧∇≦)O