ホームページ  >  記事  >  Java  >  OpenCV Javaライブラリを使用して2つの画像のキーポイントを一致させるにはどうすればよいですか?

OpenCV Javaライブラリを使用して2つの画像のキーポイントを一致させるにはどうすればよいですか?

王林
王林転載
2023-09-08 09:21:01681ブラウズ

org.opencv.features2d.Feature2D (Abstract) クラスの detect() メソッドは、指定された画像のキー ポイントを検出します。このメソッドでは、ソース イメージを表す Mat オブジェクトと、読み取りキーポイントを保持する空の MatOfKeyPoint オブジェクトを渡す必要があります。

org.opencv.features2d.Feature2D クラスのstrong>drawMatches() メソッドは、指定された 2 つの画像のキーポイント間の一致を見つけて描画します。このメソッドは次のパラメータを受け入れます -

  • src1 - 最初の Mat クラスを表すオブジェクト ソース イメージ。

  • keypoints1 - 最初のソース画像のキーポイントを表すクラス MatOfKeyPoint のオブジェクト。

  • src2 - 2 番目のソース イメージを表すクラス Mat のオブジェクト。

  • keypoints2 - クラス MatOfKeyPoint のオブジェクト。2 番目のソース イメージのキー ポイントを表します。

  • matches1to2 strong> - 最初の画像から 2 番目の画像への一致。 keypoints1[i] が keypoints2[matches[i] ] にあることを意味します。 に対応する点があります。 。

  • dst - ターゲット画像を表す Mat クラスのオブジェクト。

したがって、2 つの画像のキーポイントを一致させます -

  • imread() メソッドを使用して 2 つのソースを読み取ります画像。

  • 画像のキーポイントを取得し、detect() メソッドを使用して 2 つの画像を描画します。

  • drawMatches() メソッドを使用して、一致を見つけて描画します。

#例

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfDMatch;
import org.opencv.core.MatOfKeyPoint;
import org.opencv.features2d.FastFeatureDetector;
import org.opencv.features2d.Features2d;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
public class MatchingKeypoints {
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the source images
      String file1 ="D:\Images\feature1.jpg";
      Mat src1 = Imgcodecs.imread(file1);
      String file2 ="D:\Images\feature2.jpg";
      Mat src2 = Imgcodecs.imread(file2);
      //Creating an empty matrix to store the destination image
      Mat dst = new Mat();
      FastFeatureDetector detector = FastFeatureDetector.create();
      //Detecting the key points in both images
      MatOfKeyPoint keyPoints1 = new MatOfKeyPoint();
      detector.detect(src1, keyPoints1);
      MatOfKeyPoint keyPoints2 = new MatOfKeyPoint();
      detector.detect(src2, keyPoints2);
      MatOfDMatch matof1to2 = new MatOfDMatch();
      Features2d.drawMatches(src1, keyPoints1, src2, keyPoints2, matof1to2, dst);
      HighGui.imshow("Feature Matching", dst);
      HighGui.waitKey();
   }
}
入力画像

画像 1 -

如何使用OpenCV Java库匹配两个图像的关键点?

画像 2 -

如何使用OpenCV Java库匹配两个图像的关键点?

出力

如何使用OpenCV Java库匹配两个图像的关键点?

以上がOpenCV Javaライブラリを使用して2つの画像のキーポイントを一致させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。