Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 OpenCV로 이미지 더하기와 블렌딩 구현하기

이미지 관련 문제를 다룰 때 우리는 항상 행렬(matrix)을 기반으로 작업하게 됩니다. 행렬의 내용은 이미지 유형에 따라 달라지는데, 이진 이미지(0, 1), 그레이스케일 이미지(0~255), RGB 이미지(예: 255, 255, 255) 등이 그 예입니다. 따라서 두 이미지를 더한다는 것은 쉽게 말해 두 개의 행렬을 요소별로 더하는 것과 같습니다.

OpenCV 라이브러리에서는 이미지를 더할 때 cv2.add() 함수를 사용합니다. 단, 이미지 덧셈이 제대로 수행되려면 두 이미지의 크기가 반드시 같아야 한다는 점에 유의해야 합니다.

두 이미지 더하기

import cv2

# 첫 번째 이미지 읽기
my_firstpic = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/mqdefaultILPT6GSR.jpg', 1)
cv2.imshow('image', my_firstpic)

# 두 번째 이미지 읽기
my_secpic = cv2.imread('C:/Users/Satyajit/Pictures/west bengal/bishnupur/pp.jpg', 1)

# 두 이미지 더하기
img = cv2.add(my_firstpic, my_secpic)

cv2.waitKey(0)
cv2.destroyAllWindows()

실행 결과

파이썬 OpenCV로 이미지 더하기와 블렌딩 구현하기

두 이미지 블렌딩

두 이미지를 자연스럽게 섞어 하나로 합성하려면 cv2.addWeighted() 함수를 사용합니다. 이 함수는 가중치(weighted) 덧셈 방식으로 작동하며, 결과 이미지는 다음 공식으로 계산됩니다.

결과 = 첫 번째 이미지 × alpha + 두 번째 이미지 × beta + gamma

여기서 alpha와 beta는 각 이미지에 적용되는 가중치(투명도 역할)이며, gamma는 최종 픽셀 값에 더해지는 상수입니다.

예제 코드

import cv2

# 첫 번째 이미지 읽기
My_first = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/mqdefaultILPT6GSR.jpg', 1)

# 두 번째 이미지 읽기
My_second = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/pp.jpg', 1)

# 가중치 0.3과 0.7로 두 이미지 블렌딩
My_img = cv2.addWeighted(My_first, 0.3, My_second, 0.7, 0)

# 결과 이미지 출력
cv2.imshow('image', My_img)

# 키 입력 대기
cv2.waitKey(0)

# 열려 있는 모든 창 닫기
cv2.destroyAllWindows()

실행 결과

파이썬 OpenCV로 이미지 더하기와 블렌딩 구현하기