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("Feature Matching", dst);
HighGui.waitKey();
}
}
ইনপুট ইমেজ
Image1 - 
Image2 - 
আউটপুট
