The detect() วิธีการของ org.opencv.features2d.Feature2D (นามธรรม) ชั้นตรวจจับจุดสำคัญของภาพที่กำหนด ในวิธีนี้ คุณต้องผ่าน Mat วัตถุที่แสดงภาพต้นฉบับและ MatOfKeyPoint . ที่ว่างเปล่า วัตถุที่จะถืออ่านประเด็นสำคัญ
drawMatch() วิธีการของ org.opencv.features2d.Feature2D class ค้นหาการจับคู่ระหว่างจุดสำคัญของภาพสองภาพที่กำหนดและดึงออกมา วิธีนี้ยอมรับพารามิเตอร์ต่อไปนี้ -
-
src1 − วัตถุของ เสื่อ คลาสที่แสดงอิมเมจต้นทางแรก
-
ประเด็นสำคัญ1 − วัตถุของ MatOfKeyPoint คลาสที่แสดงจุดสำคัญของรูปภาพต้นทางแรก
-
src2 − วัตถุของคลาส Mat แทนอิมเมจที่มาที่สอง
-
ประเด็นสำคัญ2 − วัตถุของ MatOfKeyPoint คลาสที่แสดงจุดสำคัญของอิมเมจต้นทางที่สอง
-
matches1to2 − จับคู่จากภาพแรกกับภาพที่สอง ซึ่งหมายความว่า keypoints1[i] มีจุดที่สอดคล้องกันใน keypoints2[matches[i]]
-
วันที่ − วัตถุของคลาส Mat ที่แสดงภาพปลายทาง
ดังนั้นเพื่อให้ตรงกับประเด็นสำคัญของภาพสองภาพ −
-
อ่านภาพต้นฉบับทั้งสองภาพโดยใช้ imread() วิธีการ
-
รับประเด็นสำคัญของภาพทั้งสองโดยใช้ detect() วิธีการ
-
ค้นหาและวาดการแข่งขันโดยใช้ drawMatch() วิธีการ
ตัวอย่าง
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 −

รูปภาพ2 −

ผลลัพธ์
