OpenCV 라이브러리를 활용하면 이미지 필터링, 기하학적 변환, 색상 공간 변환, 히스토그램 분석 등 다양한 이미지 처리 작업을 손쉽게 수행할 수 있습니다. 이번 글에서는 그중에서도 이미지를 파일로 저장(작성)하는 방법을 Java 예제와 함께 자세히 알아보겠습니다.
이미지 작성(저장)이란?
OpenCV에서 Imgcodecs 클래스의 imread() 메서드를 사용해 이미지를 읽어오면, 그 결과는 Mat(Matrix) 객체에 저장됩니다. 이렇게 메모리에 로드된 이미지 데이터는 imwrite() 메서드를 통해 원하는 경로에 파일로 저장할 수 있습니다.
imwrite() 메서드의 매개변수
imwrite() 메서드는 두 개의 매개변수를 받습니다.
- File – 저장 결과물이 기록될 파일 경로를 나타내는 문자열 값입니다.
- Img – 저장하고자 하는 이미지 데이터가 담겨 있는
Mat객체입니다.
Java 예제 코드
다음 Java 예제는 cat.jpg 이미지를 읽어온 뒤, 다른 이름으로 다시 저장하는 과정을 보여줍니다.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class WritingImages {
public static void main(String args[]) {
// OpenCV 핵심 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 파일에서 이미지를 읽어 Mat 객체에 저장
String file = "D://images//cat.jpg";
Mat matrix = Imgcodecs.imread(file);
System.out.println("Image Loaded");
// 새로운 경로에 이미지 저장
String file2 = "D://images//sample_resaved.jpg";
Imgcodecs.imwrite(file2, matrix);
System.out.println("Image Saved");
}
}실행 결과
입력 이미지: cat.jpg

출력 이미지: sample_resaved.jpg

정리
OpenCV의 Java 인터페이스에서는 Imgcodecs.imread()로 이미지를 Mat 객체로 불러온 후, Imgcodecs.imwrite()에 저장할 경로와 Mat 객체를 전달하는 것만으로 간단하게 이미지를 파일로 저장할 수 있습니다. 이 기본 흐름은 이미지 변환, 필터링 등 다양한 처리 결과를 파일로 내보낼 때도 동일하게 활용되므로 꼭 기억해 두시기 바랍니다.