Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

OpenCV Java लाइब्रेरी का उपयोग करके दो इमेजेज के की-पॉइंट्स कैसे मिलान करें?


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 - OpenCV Java लाइब्रेरी का उपयोग करके दो इमेजेज के की-पॉइंट्स कैसे मिलान करें?

इमेज 2 - OpenCV Java लाइब्रेरी का उपयोग करके दो इमेजेज के की-पॉइंट्स कैसे मिलान करें?

आउटपुट

OpenCV Java लाइब्रेरी का उपयोग करके दो इमेजेज के की-पॉइंट्स कैसे मिलान करें?

  1. Java OpenCV लाइब्रेरी का उपयोग करके मिरर इमेज कैसे बनाएं? Java OpenCV लाइब्रेरी का उपयोग करके मिरर इमेज कैसे बनाएं?

    मिरर इमेज बनाने के लिएImageIO.read() मेथड का उपयोग करके आवश्यक इमेज पढ़ें।इमेज की ऊंचाई और चौड़ाई प्राप्त करें।परिणाम स्टोर करने के लिए एक खाली बफर्ड इमेज बनाएं।नेस्टेड फॉर लूप का उपयोग करके इमेज में प्रत्येक पिक्सेल को पार करें।इमेज की चौड़ाई को दाएं से बाएं की ओर पुनरावृत्त करें।getRGB() मेथड का उ

  1. Java OpenCV का उपयोग करके दो इमेज पर बिटवाइज़ OR ऑपरेशन कैसे करें? Java OpenCV का उपयोग करके दो इमेज पर बिटवाइज़ OR ऑपरेशन कैसे करें?

    आप org.opencv.core.Core क्लास की bitwise_or() मेथड का उपयोग करके दो इमेज के बीच बिटवाइज़ OR की गणना कर सकते हैं।यह मेथड स्रोत, गंतव्य और परिणाम मैट्रिक्स को दर्शाने वाले तीन Mat ऑब्जेक्ट्स स्वीकार करती है, स्रोत मैट्रिक्स में प्रत्येक तत्व का बिटवाइज़ डिस्जंक्शन निकालती है और परिणाम को गंतव्य मैट्रि

  1. Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें? Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें?

    OpenCV लाइब्रेरी का उपयोग करके आप इमेज प्रोसेसिंग ऑपरेशन कर सकते हैं जैसे इमेज फ़िल्टरिंग, ज्यामितीय इमेज ट्रांसफॉर्मेशन, कलर स्पेस रूपांतरण, हिस्टोग्राम, आदि।इमेज लिखनाजब भी आप Imgcodecs क्लास की imread() मेथड का उपयोग करके इमेज की सामग्री पढ़ते हैं, तो परिणाम मैट्रिक्स ऑब्जेक्ट में पढ़ा जाता है।आप