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

OpenCV हफ सर्कल ट्रांसफॉर्म का Java कार्यान्वयन


आप हफ सर्कल ट्रांसफॉर्म का उपयोग करके दी गई इमेज में सर्कल्स का पता लगा सकते हैं। आप HoughCircles() मेथड का उपयोग करके हफ सर्कल ट्रांसफॉर्म लागू कर सकते हैं, यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करता है -

  • इनपुट इमेज का प्रतिनिधित्व करने वाला एक Mat ऑब्जेक्ट।

  • पाए गए सर्कल्स के आउटपुट वेक्टर्स को स्टोर करने के लिए एक Mat ऑब्जेक्ट।

  • डिटेक्शन मेथड का प्रतिनिधित्व करने वाला एक इंटीजर वेरिएबल।

  • एक्यूमुलेटर रिज़ॉल्यूशन के इमेज रिज़ॉल्यूशन से व्युत्क्रम अनुपात और पता लगाए गए सर्कल्स के केंद्रों के बीच न्यूनतम दूरी का प्रतिनिधित्व करने वाले दो डबल वेरिएबल्स।

उदाहरण

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;

public class HoughCircleTransform extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        // OpenCV कोर लाइब्रेरी लोड करना
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        String file = "D:\\Images\\compass.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // इमेज को ग्रे में कनवर्ट करना
        Mat gray = new Mat();
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGBA2GRAY);
        
        // इमेज को ब्लर करना
        Mat blur = new Mat();
        Imgproc.medianBlur(gray, blur, 5);
        
        // हफ सर्कल्स डिटेक्ट करना
        Mat circles = new Mat();
        Imgproc.HoughCircles(blur, circles, Imgproc.HOUGH_GRADIENT, Math.PI/180, 150);
        
        for (int i = 0; i < circles.cols(); i++) {
            double[] data = circles.get(0, i);
            Point center = new Point(Math.round(data[0]), Math.round(data[1]));
            // सर्कल केंद्र
            Imgproc.circle(src, center, 1, new Scalar(0, 0, 255), 3, 8, 0);
            // सर्कल आउटलाइन
            int radius = (int) Math.round(data[2]);
            Imgproc.circle(src, center, radius, new Scalar(0, 0, 255), 3, 8, 0);
        }
        
        // मैट्रिक्स को JavaFX राइटेबल इमेज में कनवर्ट करना
        Image img = HighGui.toBufferedImage(src);
        WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
        
        // इमेज व्यू सेट करना
        ImageView imageView = new ImageView(writableImage);
        imageView.setX(10);
        imageView.setY(10);
        imageView.setFitWidth(575);
        imageView.setPreserveRatio(true);
        
        // Scene ऑब्जेक्ट सेट करना
        Group root = new Group(imageView);
        Scene scene = new Scene(root, 595, 400);
        stage.setTitle("हफ सर्कल ट्रांसफॉर्म");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String args[]) {
        launch(args);
    }
}

इनपुट इमेज

OpenCV हफ सर्कल ट्रांसफॉर्म का Java कार्यान्वयन

आउटपुट

उपरोक्त प्रोग्राम निष्पादित करने पर निम्नलिखित आउटपुट उत्पन्न करता है -

OpenCV हफ सर्कल ट्रांसफॉर्म का Java कार्यान्वयन

  1. Java का उपयोग करके OpenCV में ब्लर (एवरेजिंग) कैसे लागू करें? Java का उपयोग करके OpenCV में ब्लर (एवरेजिंग) कैसे लागू करें?

    आप लो-पास फिल्टर का उपयोग करके छवि को फ़िल्टर करके ब्लर कर सकते हैं, यह छवि से उच्च आवृत्ति सामग्री (शोर, किनारे) को हटा देता है। एवरेजिंग OpenCV द्वारा प्रदान की जाने वाली ब्लरिंग तकनीकों में से एक है, यह कर्नेल क्षेत्र में सभी पिक्सेल्स के औसत के साथ केंद्रीय तत्व को प्रतिस्थापित करता है। आप blur

  1. Java में OpenCV का उपयोग करके वृत्त कैसे बनाएं? Java में OpenCV का उपयोग करके वृत्त कैसे बनाएं?

    Java OpenCV लाइब्रेरी का org.opencv.imgproc पैकेज Imgproc नामक एक क्लास प्रदान करता है।वृत्त बनाने के लिए, आपको इस क्लास की circle() मेथड को कॉल करना होगा। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करती है −एक Mat ऑब्जेक्ट जो उस इमेज को दर्शाता है जिस पर वृत्त बनाया जाना है।एक Point ऑब्जेक्ट जो वृत्त के

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

    CascadeClassifier क्लास का उपयोग क्लासिफायर फाइल लोड करने और इमेज में वांछित ऑब्जेक्ट्स का पता लगाने के लिए किया जाता है।इस क्लास की detectMultiScale() मेथड विभिन्न आकारों के कई ऑब्जेक्ट्स का पता लगाती है। यह मेथड स्वीकार करती है −इनपुट इमेज को रखने वाली Mat क्लास का ऑब्जेक्ट।पता लगाए गए चेहरों को स