OpenCV에서는 Core 클래스가 제공하는 addWeighted() 메서드를 사용하여 두 이미지를 간단하게 혼합(blending)할 수 있습니다.
이 메서드는 소스 이미지와 결과를 담을 행렬을 나타내는 두 개의 Mat 객체, 그리고 각 이미지에 적용할 가중치(알파, 베타)와 감마 값을 의미하는 double 값들을 인자로 받아 두 이미지의 가중 합(weighted sum)을 계산합니다. 계산 공식은 다음과 같습니다.
dst = src1 × alpha + src2 × beta + gamma
예제 코드
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
public class AddingTwoImages {
public static void main(String[] args) {
// OpenCV 코어 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 입력 이미지 읽기
Mat src1 = Imgcodecs.imread("D://images//a1.jpg");
Mat src2 = Imgcodecs.imread("D://images//a2.jpg");
// 결과를 저장할 빈 행렬 생성
Mat dst = new Mat();
// 두 이미지 혼합
Core.addWeighted(src1, 0.4, src2, 0.8, 0, dst);
HighGui.imshow("Adding two images", dst);
HighGui.waitKey(0);
}
}입력 이미지 1

입력 이미지 2

출력 결과

참고 사항
addWeighted() 메서드를 사용할 때는 다음 사항을 유의해야 합니다.
- 두 입력 이미지는 반드시 동일한 크기(width, height)와 채널 수를 가져야 합니다. 크기가 다르면 오류가 발생하므로, 필요하다면 Imgproc.resize() 메서드로 먼저 크기를 맞춰 주세요.
- alpha와 beta 값의 합이 1이면 일반적인 투명도 기반 블렌딩 효과를 얻을 수 있으며, 값이 1보다 크면 밝아지고 작으면 어두워집니다.
- gamma 값은 최종 결과에 더해지는 상수로, 이미지 전체의 밝기를 조절할 때 사용됩니다.