JavaとOpenCVのflip()メソッドで画像を反転させる方法
JavaでOpenCVを使用して画像を反転(フリップ)させたい場合、Coreクラスが提供するflip()メソッドを利用します。このメソッドは、画像をX軸・Y軸に沿って反転させることができ、以下の3つの引数を受け取ります。
- src:元画像のデータを格納したソース行列(Matオブジェクト)
- dst:処理結果を格納するための空の行列(Matオブジェクト)
- flipCode:反転の方向を指定するコード(0=X軸方向の反転、正の値=Y軸方向の反転、負の値=両軸方向の反転)
画像を反転させる手順
OpenCVで画像を反転させるには、次の手順に従います。
- loadLibrary()メソッドを使用して、OpenCVのコアネイティブライブラリをロードします。
- imread()メソッドを使用して、画像ファイルの内容を読み込み、Matオブジェクト(行列)に格納します。
- 結果を保持するための空のMatオブジェクトを作成します。
- 作成した行列を引数として渡し、flip()メソッドを呼び出して反転処理を実行します。
- 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");
}
}入力画像

出力画像

flipCodeの値による反転方向の違い
flip()メソッドの第3引数に渡すflipCodeの値によって、反転の挙動が変わります。用途に応じて適切な値を選択してください。
- 0:X軸を中心に上下反転(垂直反転)
- 正の値(例:1):Y軸を中心に左右反転(水平反転)
- 負の値(例:-1):両方の軸で反転(180度回転と同等)
このように、OpenCVのflip()メソッドを使えば、わずか数行のコードで簡単に画像の反転処理を実装できます。画像編集アプリや前処理パイプラインなど、さまざまな場面で活用できる基本的なテクニックなので、ぜひ覚えておきましょう。
-
JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法
カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列