JavaとOpenCVで円を描画する方法を徹底解説
Java版OpenCVライブラリの org.opencv.imgproc パッケージには、Imgproc というクラスが含まれています。
画像に円を描きたい場合は、このクラスが提供する circle() メソッドを呼び出します。このメソッドは以下のパラメータを受け取ります。
Matオブジェクト:円を描画する対象となる画像を表します。
Pointオブジェクト:円の中心座標を表します。
int型の値:円の半径を表します。
Scalarオブジェクト:円の色を表します。OpenCVでは色の指定順序がRGBではなくBGR(青・緑・赤)である点に注意してください。
int型の値:円の輪郭線の太さを表します。デフォルトは1です。負の値を指定すると塗りつぶされた円になります。
サンプルコード
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DrawingCircle {
public static void main(String args[]) {
// OpenCVのコアライブラリを読み込む
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// 元画像をMatオブジェクトとして読み込む
String file = "D:\\images\\blank.jpg";
Mat src = Imgcodecs.imread(file);
// 円を描画する
Point center = new Point(300, 200); // 円の中心座標
int radius = 100; // 半径
Scalar color = new Scalar(64, 64, 64); // 色(BGR形式)
int thickness = 10; // 線の太さ
Imgproc.circle(src, center, radius, color, thickness);
// 画像を保存して表示する
Imgcodecs.imwrite("circle.jpg", src);
HighGui.imshow("Drawing a Circle", src);
HighGui.waitKey();
}
}コードのポイント
まず System.loadLibrary() でOpenCVのネイティブライブラリを読み込み、Imgcodecs.imread() で画像ファイルを Mat オブジェクトとして読み込みます。その後、中心座標・半径・色・線幅を指定して Imgproc.circle() を呼び出すだけで、簡単に円を描画できます。
描画後は Imgcodecs.imwrite() で結果をファイルに保存し、HighGui.imshow() で画面に表示しています。
実行結果
上記のプログラムを実行すると、指定した位置に円が描画された画像が表示されます。

-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列
-
OpenCVのcircle()関数を使って画像に円を描画する方法
はじめに本記事では、OpenCVが提供するcircle()関数を使用して、画像上に円を描画する方法を解説します。円の中心座標・半径・色・線の太さを自由に指定できるため、画像への注釈付けや図形のオーバーレイ表示など、さまざまな場面で活用できます。元画像処理の手順(アルゴリズム)ステップ1:OpenCVをインポートする ステップ2:円の半径を定義する ステップ3:円の中心座標を定義する ステップ4:円の色を定義する ステップ5:線の太さを定義する ステップ6:上記の引数を画像とともにcv2.circle()へ渡す ステップ7:出力結果を表示するcv2.circle()の主な引数image:描画対象