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

Java OpenCV로 이미지 뒤집기: Core.flip() 메서드 완벽 가이드

OpenCV의 Core 클래스가 제공하는 flip() 메서드를 사용하면 이미지를 x축 또는 y축을 기준으로 손쉽게 뒤집을 수 있습니다. 이 메서드는 다음과 같은 세 가지 매개변수를 받습니다.

  • 소스 행렬(src): 원본 이미지의 데이터를 담고 있는 행렬
  • 대상 행렬(dst): 처리 결과 이미지를 저장할 빈 행렬
  • 플립 코드(flipCode): 뒤집을 방향을 지정하는 정수 값 (0 – x축 기준 상하 반전, 양수(+) – y축 기준 좌우 반전, 음수(-) – x축과 y축 모두 반전)

이미지를 뒤집는 절차

  1. loadLibrary() 메서드를 사용해 OpenCV 코어 네이티브 라이브러리를 로드합니다.
  2. imread() 메서드로 이미지 파일을 읽어 Mat 객체에 저장합니다.
  3. 결과를 담을 빈 Mat 객체를 생성합니다.
  4. 생성한 행렬들을 매개변수로 전달하며 flip() 메서드를 호출합니다.
  5. imwrite() 메서드에 대상 행렬을 전달하여 결과 이미지를 파일로 저장합니다.

예제 코드

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ChangingOrientation {
    public static void main(String args[]) {
        // OpenCV 코어 라이브러리 로드
        System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
        // 이미지 파일을 읽어 Matrix 객체에 저장
        String file ="D:\\Images\\cat.jpg";
        Mat src = Imgcodecs.imread(file);
        // 결과를 저장할 빈 행렬 생성
        Mat dst = new Mat();
        // 이미지 방향 변경 (양축 반전)
        Core.flip(src, dst, -1);
        // 결과 이미지 저장
        Imgcodecs.imwrite("D:\\Images\\flipping.jpg", dst);
        System.out.println("Image Processed");
    }
}

입력 이미지

Java OpenCV로 이미지 뒤집기: Core.flip() 메서드 완벽 가이드

출력 이미지

Java OpenCV로 이미지 뒤집기: Core.flip() 메서드 완벽 가이드

플립 코드 정리

위 예제에서는 플립 코드로 -1을 사용했기 때문에 원본 이미지가 상하좌우 모두 반전된 결과를 얻을 수 있습니다. 만약 거울처럼 좌우만 반전하고 싶다면 양수 값을, 상하 반전만 원한다면 0을 지정하면 됩니다. 이처럼 Core.flip() 하나만으로도 다양한 방향 전환 효과를 간단히 구현할 수 있습니다.