org.opencv.features2d.Feature2D (एब्स्ट्रैक्ट) क्लास का detect() मेथड दी गई इमेज के की-पॉइंट्स का पता लगाता है। इस मेथड को आपको स्रोत इमेज का प्रतिनिधित्व करने वाला एक Mat ऑब्जेक्ट और पढ़े गए की-पॉइंट्स को रखने के लिए एक खाली MatOfKeyPoint ऑब्जेक्ट पास करना होगा।
org.opencv.features2d.Feature2D क्लास का drawMatches() मेथड दो दी गई इमेजेज के की-पॉइंट्स के बीच मिलान ढूंढता है और उन्हें ड्रा करता है। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करता है -
src1 - पहली स्रोत इमेज का प्रतिनिधित्व करने वाला Mat क्लास का ऑब्जेक्ट।
keypoints1 - पहली स्रोत इमेज के की-पॉइंट्स का प्रतिनिधित्व करने वाला MatOfKeyPoint क्लास का ऑब्जेक्ट।
src2 - दूसरी स्रोत इमेज का प्रतिनिधित्व करने वाला Mat क्लास का ऑब्जेक्ट।
keypoints2 - दूसरी स्रोत इमेज के की-पॉइंट्स का प्रतिनिधित्व करने वाला MatOfKeyPoint क्लास का ऑब्जेक्ट।
matches1to2 - पहली इमेज से दूसरी इमेज तक मिलान, जिसका अर्थ है कि keypoints1[i] का keypoints2[matches[i]] में एक संबंधित बिंदु है।
dst - गंतव्य इमेज का प्रतिनिधित्व करने वाला Mat क्लास का ऑब्जेक्ट।
इसलिए, दो इमेजेज के की-पॉइंट्स मिलान करने के लिए -
imread() मेथड का उपयोग करके दो स्रोत इमेजेज पढ़ें।
detect() मेथड का उपयोग करके दोनों इमेजेज के की-पॉइंट्स प्राप्त करें।
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 {
// OpenCV कोर लाइब्रेरी लोड करना
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// स्रोत इमेजेज पढ़ना
String file1 = "D:\\Images\\feature1.jpg";
Mat src1 = Imgcodecs.imread(file1);
String file2 = "D:\\Images\\feature2.jpg";
Mat src2 = Imgcodecs.imread(file2);
// गंतव्य इमेज स्टोर करने के लिए खाली मैट्रिक्स बनाना
Mat dst = new Mat();
FastFeatureDetector detector = FastFeatureDetector.create();
// दोनों इमेजेज में की-पॉइंट्स डिटेक्ट करना
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("फीचर मिलान", dst);
HighGui.waitKey();
}
}
इनपुट इमेजेज
इमेज 1 - 
इमेज 2 - 
आउटपुट
