Heim > Java > javaLernprogramm > Hauptteil

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

王林
Freigeben: 2023-09-08 09:21:01
nach vorne
702 Leute haben es durchsucht

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();
   }
}
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!