JavaとOpenCVで矢印付きの線を描画する方法をわかりやすく解説
Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocクラスが含まれています。このクラスは、入力画像を処理するためのさまざまなメソッドを提供しており、その中には画像上に幾何学的な図形を描画するためのメソッド群も含まれています。
画像に矢印付きの線を描きたい場合は、このクラスが提供するarrowedLine()メソッドを使用します。このメソッドは、以下のパラメータを受け取ります。
描画対象となる画像を表す
Matオブジェクト線の始点と終点を表す2つの
Pointオブジェクト線の色を表す
Scalarオブジェクト(BGR形式で指定)線の太さを表す整数値(デフォルト値:1)
サンプルコード
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;
public class DrawingArrowedLine {
public static void main(String args[]) {
// OpenCVのコアライブラリを読み込む
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// 元画像をMatオブジェクトとして読み込む
Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");
// 矢印付きの線を描画する
Point start = new Point(100, 200);
Point end = new Point(500, 200);
Scalar color = new Scalar(64, 64, 64);
int thickness = 10;
Imgproc.arrowedLine(src, start, end, color, thickness);
// 画像を保存して表示する
Imgcodecs.imwrite("arrowed_line.jpg", src);
HighGui.imshow("Drawing an arrowed line", src);
HighGui.waitKey();
}
}
コードのポイント
System.loadLibrary()でOpenCVのネイティブライブラリをロードします。Imgcodecs.imread()を使って、描画先となる画像ファイルを読み込みます。始点(100, 200)から終点(500, 200)へ向かう矢印を、太さ10・グレー系の色(BGR値: 64, 64, 64)で描画しています。
Imgcodecs.imwrite()で結果を保存し、HighGui.imshow()でウィンドウに表示します。
実行結果
上記のプログラムを実行すると、次のようなウィンドウが表示され、画像上に矢印付きの線が描画されます。

-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列
-
OpenCVを使って画像に線を描画する方法
この記事では、OpenCVのcv2.line()関数を使用して、画像にシンプルな線を描画する方法を解説します。線の始点・終点・太さ・色を自由に指定できるので、図形の描画や注釈の追加など、さまざまな場面で活用できます。 元画像 処理の流れ(アルゴリズム) ステップ1:cv2をインポートする。 ステップ2:imread()で画像を読み込む。 ステップ3:image.shapeメソッドで画像のサイズ(高さ・幅・チャンネル数)を取得する。 ステップ4:線の始点を定義する。 ステップ5:線の終点を定義する。 ステップ6:線の太さを定義する。 ステップ7:cv2.line()関数で線を描画し、ステップ3