Heim >Java >javaLernprogramm >Wie können Schlüsselpunkte zweier Bilder mithilfe der OpenCV-Java-Bibliothek abgeglichen werden?
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.
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(); } }
Bild1 -
Bild2 -
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!