Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaとOpenCVのflip()メソッドで画像を反転させる方法

JavaでOpenCVを使用して画像を反転(フリップ)させたい場合、Coreクラスが提供するflip()メソッドを利用します。このメソッドは、画像をX軸・Y軸に沿って反転させることができ、以下の3つの引数を受け取ります。

  • src:元画像のデータを格納したソース行列(Matオブジェクト)
  • dst:処理結果を格納するための空の行列(Matオブジェクト)
  • flipCode:反転の方向を指定するコード(0=X軸方向の反転、正の値=Y軸方向の反転、負の値=両軸方向の反転)

画像を反転させる手順

OpenCVで画像を反転させるには、次の手順に従います。

  1. loadLibrary()メソッドを使用して、OpenCVのコアネイティブライブラリをロードします。
  2. imread()メソッドを使用して、画像ファイルの内容を読み込み、Matオブジェクト(行列)に格納します。
  3. 結果を保持するための空のMatオブジェクトを作成します。
  4. 作成した行列を引数として渡し、flip()メソッドを呼び出して反転処理を実行します。
  5. imwrite()メソッドに結果の行列を渡して呼び出し、処理後の画像をファイルとして書き出します。

サンプルコード

以下は、画像を上下左右に反転させる具体的なJavaコード例です。

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 );

        // 画像ファイルを読み込み、Matオブジェクトに格納
        String file = "D:\\Images\\cat.jpg";
        Mat src = Imgcodecs.imread(file);

        // 結果を格納する空のMatオブジェクトを作成
        Mat dst = new Mat();

        // 画像の向きを変更(flipCodeに-1を指定すると両軸反転)
        Core.flip(src, dst, -1);

        // 処理結果の画像を書き出し
        Imgcodecs.imwrite("D:\\Images\\flipping.jpg", dst);
        System.out.println("Image Processed");
    }
}

入力画像

JavaとOpenCVのflip()メソッドで画像を反転させる方法

出力画像

JavaとOpenCVのflip()メソッドで画像を反転させる方法

flipCodeの値による反転方向の違い

flip()メソッドの第3引数に渡すflipCodeの値によって、反転の挙動が変わります。用途に応じて適切な値を選択してください。

  • 0:X軸を中心に上下反転(垂直反転)
  • 正の値(例:1):Y軸を中心に左右反転(水平反転)
  • 負の値(例:-1):両方の軸で反転(180度回転と同等)

このように、OpenCVのflip()メソッドを使えば、わずか数行のコードで簡単に画像の反転処理を実装できます。画像編集アプリや前処理パイプラインなど、さまざまな場面で活用できる基本的なテクニックなので、ぜひ覚えておきましょう。

  1. JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法

    カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています

  2. JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法

    OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列