Heim  >  Artikel  >  Java  >  Wie können Schlüsselpunkte zweier Bilder mithilfe der OpenCV-Java-Bibliothek abgeglichen werden?

Wie können Schlüsselpunkte zweier Bilder mithilfe der OpenCV-Java-Bibliothek abgeglichen werden?

王林
王林nach vorne
2023-09-08 09:21:01682Durchsuche

Die Methode

detect()

der Klasse org.opencv.features2d.Feature2D (abstract) erkennt Schlüsselpunkte eines bestimmten Bildes. Für diese Methode müssen Sie ein Mat-Objekt übergeben, das das Quellbild darstellt, und ein leeres MatOfKeyPoint -Objekt, um die gelesenen Schlüsselpunkte zu speichern.

drawMatches() der Klasse org.opencv.features2d.Feature2D findet Übereinstimmungen zwischen Schlüsselpunkten zweier gegebener Bilder und zeichnet sie. Diese Methode akzeptiert die folgenden Parameter –

  • src1 – die das erste Objektquellbild der Mat-Klasse darstellen.

  • keypoints1 – Objekt der Klasse MatOfKeyPoint, das die Schlüsselpunkte des ersten Quellbilds darstellt.

  • src2 – Objekt der Klasse Mat, das das zweite Quellbild darstellt.

  • keypoints2 – Objekt der Klasse MatOfKeyPoint, das die Schlüsselpunkte des zweiten Quellbilds darstellt.

  • matches1to2 strong> – eine Übereinstimmung vom ersten Bild mit dem zweiten Bild, was bedeutet, dass keypoints1[i] einen entsprechenden Punkt in keypoints2[matches[i]] hat.

  • dst – ein Objekt der Mat-Klasse, das das Zielbild darstellt.

Also, die wichtigsten Punkte zweier Bilder abgleichen –

  • Lesen Sie die beiden Quellbilder mit der Methode imread().

  • Ermitteln Sie die wichtigsten Punkte des Bildes und verwenden Sie die Methode detect(), um zwei Bilder zu zeichnen.

  • Verwenden Sie die Methode drawMatches(), um Übereinstimmungen zu finden und zu zeichnen.

Beispiel

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();
   }
}

Eingabebild

Bild1 -

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

Bild2 -

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

Ausgabe

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

Das obige ist der detaillierte Inhalt vonWie können Schlüsselpunkte zweier Bilder mithilfe der OpenCV-Java-Bibliothek abgeglichen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen