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

OpenCV Javaライブラリを使用して2つの画像の要点を一致させる方法は?


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

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

  • src1 マットのオブジェクト 最初のソース画像を表すクラス。

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

  • src2 −2番目のソース画像を表すMatクラスのオブジェクト。

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

  • matchs1to2 −最初の画像から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();
   }
}

入力画像

Image1

OpenCV Javaライブラリを使用して2つの画像の要点を一致させる方法は?

Image2

OpenCV Javaライブラリを使用して2つの画像の要点を一致させる方法は?

出力

OpenCV Javaライブラリを使用して2つの画像の要点を一致させる方法は?


  1. Java OpenCVを使用して2つの画像に対してビット単位のOR演算を実行するにはどうすればよいですか?

    bitwise_or()を使用して、ビット単位または2つの画像間を計算できます org.opencv.core.Coreのメソッド クラス。 このメソッドは、3つのマットを受け入れます ソース、デスティネーション、および結果のマトリックスを表すオブジェクトは、ソースマトリックスの各要素のビット単位の論理和を計算し、結果をデスティネーションマトリックスに格納します。 例 次のJavaの例では、画像をバイナリとグレースケールに変換し、結果のビット単位の論理和を計算しています。 import org.opencv.core.Core; import org.opencv.core.Mat;

  2. Java OpenCVライブラリを使用してイメージを作成するにはどうすればよいですか?

    OpenCVライブラリを使用すると、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどの画像処理操作を実行できます。 画像を書く Imgcodecsクラスのimread()メソッドを使用して画像のコンテンツを読み取るたびに、結果がMatrixオブジェクトに読み込まれます。 imwrite()メソッドを使用してイメージを書き込み/保存できます。これは2つのパラメータ、つまり-を受け入れます ファイル −結果を保存するファイルパスを表す文字列値。 Img −保存する画像のデータを含むマトリックスオブジェクト。 例 次のJavaの例は画像の内容を読み取りますc