JavaでOpenCVのMatオブジェクトを宣言する方法【初心者向け解説】
OpenCVにおけるMatクラスは、画像を格納するための行列(マトリックス)オブジェクトを表すクラスです。画像データはすべてこのMatオブジェクトとして扱われますが、画像ファイルを読み込むだけでなく、手動でMatオブジェクトを宣言して作成することも可能です。
Matオブジェクトを作成する手順
JavaでOpenCVを使ってMatオブジェクトを宣言するには、以下の手順に従います。
1. OpenCVネイティブライブラリのロード
OpenCVライブラリを使用してJavaコードを書く場合、最初に行うべきはloadLibrary()メソッドを使ってOpenCVのネイティブライブラリをロードすることです。これにより、JavaからC++で実装されたOpenCVの機能を呼び出せるようになります。
2. Matクラスのインスタンス化
new Mat()などのコンストラクタを使って、Matクラスのインスタンスを生成します。行数・列数・データ型などを指定して、任意のサイズの行列を作成できます。
3. メソッドを使って行列に値を設定
row()やcol()メソッドにインデックス値を渡すことで、行列の特定の行や列を取得できます。
4. setTo()メソッドで値を代入
取得した行や列に対しては、setTo()メソッドの各種バリアントを使用して値を設定できます。
サンプルコード
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.core.Scalar;
public class CreatingMat {
public static void main(String[] args) {
// コアライブラリのロード
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 5x5の行列を作成(初期値0)
Mat matrix = new Mat(5, 5, CvType.CV_8UC1, new Scalar(0));
// 0行目に値1を設定
Mat row0 = matrix.row(0);
row0.setTo(new Scalar(1));
// 3列目に値3を設定
Mat col3 = matrix.col(3);
col3.setTo(new Scalar(3));
// 行列の内容を出力
System.out.println("Matrix data:\n" + matrix.dump());
}
}
実行結果
Matrix data:
[
1, 1, 1, 3, 1;
0, 0, 0, 3, 0;
0, 0, 0, 3, 0;
0, 0, 0, 3, 0;
0, 0, 0, 3, 0
]
このコードでは、まずCvType.CV_8UC1(8ビット符号なし整数・1チャンネル)を指定して5×5の行列を初期値0で作成しています。その後、0行目全体に値「1」、3列目全体に値「3」を設定しているため、上記のような出力結果になります。dump()メソッドを使うと、行列の中身を文字列として簡単に確認できるので、デバッグ時にも便利です。
-
JavaとOpenCVのflip()メソッドで画像を反転させる方法
JavaでOpenCVを使用して画像を反転(フリップ)させたい場合、Coreクラスが提供するflip()メソッドを利用します。このメソッドは、画像をX軸・Y軸に沿って反転させることができ、以下の3つの引数を受け取ります。src:元画像のデータを格納したソース行列(Matオブジェクト)dst:処理結果を格納するための空の行列(Matオブジェクト)flipCode:反転の方向を指定するコード(0=X軸方向の反転、正の値=Y軸方向の反転、負の値=両軸方向の反転)画像を反転させる手順OpenCVで画像を反転させるには、次の手順に従います。loadLibrary()メソッドを使用して、OpenCVのコア
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列