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

OpenCV Java का उपयोग करके इमेज में संभावित ऑब्जेक्ट्स के चारों ओर दीर्घवृत्त (Ellipse) कैसे फिट करें?


आप org.opencv.imgproc.Imgproc क्लास के fitEllipse() मेथड का उपयोग करके एक आकृति पर दीर्घवृत्त फिट कर सकते हैं। यह मेथड MatOfPoint2f क्लास का एक ऑब्जेक्ट स्वीकार करता है, दिए गए बिंदुओं के सेट को फिट करने वाले दीर्घवृत्त की गणना करता है और एक RotatedRect ऑब्जेक्ट लौटाता है।

इसका उपयोग करके आप इमेज में संभावित ऑब्जेक्ट्स के चारों ओर दीर्घवृत्त बना सकते हैं। ऐसा करने के लिए,

  • imread() मेथड का उपयोग करके एक इमेज पढ़ें।

  • cvtColor() मेथड का उपयोग करके इसे ग्रेस्केल इमेज में कनवर्ट करें।

  • threshold() मेथड का उपयोग करके ग्रे इमेज को बाइनरी में कनवर्ट करें।

  • findContours() मेथड का उपयोग करके इमेज में कंटूर खोजें।

  • अब, प्रत्येक कंटूर मान को MatOfPoint2f के रूप में fitEllipse() मेथड में पास करके संभावित कंटूर के लिए RotatedRect ऑब्जेक्ट्स प्राप्त करें।

  • अंत में, ellipse() मेथड का उपयोग करके संभावित आकृतियों के चारों ओर दीर्घवृत्त बनाएं।

नोट - दीर्घवृत्त फिट करने के लिए ऑब्जेक्ट में कम से कम पांच बिंदु होने चाहिए।

उदाहरण

import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class FitEllipseExample {
    public static void main(String args[]) throws Exception {
        // OpenCV कोर लाइब्रेरी लोड करना
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // इमेज की सामग्री पढ़ना
        String file = "D:\\Images\\javafx_graphical.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // स्रोत इमेज को बाइनरी में कनवर्ट करना
        Mat gray = new Mat(src.rows(), src.cols(), src.type());
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
        Mat binary = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
        Imgproc.threshold(gray, binary, 100, 255, Imgproc.THRESH_BINARY_INV);
        
        // कंटूर खोजना
        List contours = new ArrayList<>();
        Mat hierarchy = new Mat();
        Imgproc.findContours(binary, contours, hierarchy, Imgproc.RETR_TREE,
            Imgproc.CHAIN_APPROX_SIMPLE);
        
        // खाली रेक्टेंगल
        RotatedRect[] rec = new RotatedRect[contours.size()];
        for (int i = 0; i < contours.size(); i++) {
            rec[i] = new RotatedRect();
            if (contours.get(i).rows() > 5) {
                rec[i] = Imgproc.fitEllipse(new MatOfPoint2f(contours.get(i).toArray()));
            }
            Scalar color_elli = new Scalar(190, 0, 0);
            Imgproc.ellipse(src, rec[i], color_elli, 5);
        }
        
        HighGui.imshow("कंटूर ऑपरेशन", src);
        HighGui.waitKey();
    }
}

इनपुट इमेज

OpenCV Java का उपयोग करके इमेज में संभावित ऑब्जेक्ट्स के चारों ओर दीर्घवृत्त (Ellipse) कैसे फिट करें?

आउटपुट

OpenCV Java का उपयोग करके इमेज में संभावित ऑब्जेक्ट्स के चारों ओर दीर्घवृत्त (Ellipse) कैसे फिट करें?

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

    Imgproc क्लास की cvtColor() मेथड इमेज के रंग को एक से दूसरे में बदलती है। यह मेथड तीन पैरामीटर्स स्वीकार करती है −src − स्रोत को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।dst − गंतव्य को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।code − गंतव्य इमेज के रंग को दर्शाने वाला एक पूर्णांक मान।रंगीन इमेज को ग्रेस्केल में

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

    Imgproc क्लास की cvtColor() मेथड इमेज के रंग को एक से दूसरे में बदलती है। यह मेथड तीन पैरामीटर्स स्वीकार करती है −src − स्रोत को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।dst − गंतव्य को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।code − गंतव्य इमेज के रंग को दर्शाने वाला एक पूर्णांक मान।रंगीन इमेज को ग्रेस्केल में

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

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