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

JavaとOpenCVを使って画像にポリラインを描画する方法

OpenCVでポリラインを描画するには?

Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocというクラスが含まれています。このクラスには、resize()やfilter2D()など、入力画像を処理するためのさまざまなメソッドが用意されています。さらに、それらに加えて、画像の上に幾何学的な図形を描画するための一連のメソッドも提供されています。

その中でも、ポリライン(折れ線)を描画したい場合は、このクラスのpolylines()メソッドを呼び出します。このメソッドは、以下のパラメータを受け取ります。

  • ポリゴンを描画する対象の画像を表すMatオブジェクト。

  • MatOfPoint型のオブジェクトを保持するListオブジェクト。

  • ポリラインを閉じた形状にするかどうかを指定するboolean型のパラメータ。

  • ポリゴンの色を表すScalarオブジェクト。

  • ポリゴンの線の太さを表す整数値(デフォルト:1)。

サンプルコード

import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
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 DrawingPolylines {
   public static void main(String args[]) {
      // OpenCVネイティブライブラリを読み込む
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

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

      // ポリラインの頂点を定義する
      List<MatOfPoint> list = new ArrayList<MatOfPoint>();
      list.add(new MatOfPoint(
            new Point(208, 71), new Point(421, 161),
            new Point(226, 232), new Point(332, 52),
            new Point(363, 250)));

      boolean isClosed = true;          // 線を閉じるかどうか
      Scalar color = new Scalar(64, 64, 64); // 描画色(BGR)
      int thickness = 10;               // 線の太さ

      // ポリラインを描画する
      Imgproc.polylines(src, list, isClosed, color, thickness);

      // 結果を保存して表示する
      Imgcodecs.imwrite("polylines.jpg", src);
      HighGui.imshow("Drawing a polylines", src);
      HighGui.waitKey();
   }
}

実行結果

上記のプログラムを実行すると、指定した座標を結んだポリラインが描画され、次のようなウィンドウが表示されます。

JavaとOpenCVを使って画像にポリラインを描画する方法


  1. JavaとOpenCVで線を描画する方法をわかりやすく解説

    Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocというクラスが含まれています。画像に直線を描画するには、このクラスが提供するline()メソッドを呼び出します。 line()メソッドのパラメータ line()メソッドは、以下のパラメータを受け取ります。 Matオブジェクト ― 直線を描画する対象となる画像を表します。 Pointオブジェクト2つ ― 直線の始点と終点の座標を表します。 Scalarオブジェクト ― 直線の色をBGR形式で指定します。 整数値 ― 直線の太さを指定します(デフォルト値:1)。 サンプルコード 以下は、白紙の画

  2. JavaとOpenCVライブラリを使って画像内の顔を検出する方法

    JavaでOpenCVを使用して画像から顔を検出するには、CascadeClassifierクラスを利用します。このクラスは、分類器ファイル(カスケードファイル)を読み込み、画像内から目的のオブジェクト(ここでは顔)を検出する役割を担います。 CascadeClassifierクラスとは CascadeClassifierは、OpenCVが提供する物体検出用のクラスです。事前に学習済みのカスケード分類器(XMLファイル)を読み込むことで、顔や人など特定のパターンを画像から認識できます。 detectMultiScale()メソッドについて このクラスが持つdetectMultiScale(