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

JavaとOpenCVで塗りつぶし円を描画する方法

Java OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocクラスが含まれています。このクラスにはcircle()メソッドが用意されており、これを使用することで画像上に円を簡単に描画できます。

circle()メソッドのパラメータ

circle()メソッドは、以下の引数を受け取ります。

  • Matオブジェクト: 円を描画する対象となる画像を表します。
  • Pointオブジェクト: 円の中心座標を表します。
  • int型の値: 円の半径を表します。
  • Scalarオブジェクト: 円の色をBGR形式で指定します。
  • int型の値: 線の太さを表します(デフォルトは1)。負の値やImgproc.FILLEDを指定すると塗りつぶされます。

特に、線種としてImgproc.FILLEDを渡すと、輪郭だけではなく中身が塗りつぶされた円(フィルドサークル)が描画されます。

サンプルコード

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 DrawingFilledCircle {
    public static void main(String args[]) {
        // OpenCVネイティブライブラリの読み込み
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // 元画像をMatオブジェクトとして読み込む
        Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");

        // 円の描画設定
        Point center = new Point(300, 200);   // 円の中心
        int radius = 100;                     // 半径
        Scalar color = new Scalar(64, 64, 64); // 色(BGR)
        int thickness = Imgproc.FILLED;       // 塗りつぶし指定

        // 円を描画
        Imgproc.circle(src, center, radius, color, thickness);

        // 結果の保存と表示
        Imgcodecs.imwrite("filled_circle.jpg", src);
        HighGui.imshow("Drawing a circle", src);
        HighGui.waitKey();
    }
}

コードのポイント

まずSystem.loadLibrary()でOpenCVのネイティブライブラリを読み込み、次にImgcodecs.imread()で元画像を読み込みます。その後、中心座標・半径・色・太さをそれぞれ指定してImgproc.circle()を呼び出すだけで、塗りつぶし円の描画が完了します。thicknessImgproc.FILLED(実質的に-1と同じ)を指定するのがポイントです。

実行結果

上記のプログラムを実行すると、指定した位置(300, 200)に半径100ピクセルのグレーの塗りつぶし円が描画された画像が表示され、同時にファイルとしても保存されます。

JavaとOpenCVで塗りつぶし円を描画する方法

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

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

  2. OpenCVのcircle()関数を使って画像に円を描画する方法

    はじめに本記事では、OpenCVが提供するcircle()関数を使用して、画像上に円を描画する方法を解説します。円の中心座標・半径・色・線の太さを自由に指定できるため、画像への注釈付けや図形のオーバーレイ表示など、さまざまな場面で活用できます。元画像処理の手順(アルゴリズム)ステップ1:OpenCVをインポートする ステップ2:円の半径を定義する ステップ3:円の中心座標を定義する ステップ4:円の色を定義する ステップ5:線の太さを定義する ステップ6:上記の引数を画像とともにcv2.circle()へ渡す ステップ7:出力結果を表示するcv2.circle()の主な引数image:描画対象