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

OpenCV में Canny एज डिटेक्शन को दर्शाने वाला Java उदाहरण


Canny एज डिटेक्टर को इष्टतम डिटेक्टर के रूप में जाना जाता है क्योंकि यह केवल मौजूदा एज का पता लगाता है, प्रति पेज केवल एक प्रतिक्रिया देता है और एज पिक्सल्स और डिटेक्टेड पिक्सल्स के बीच की दूरी को कम करता है।

Imgproc क्लास का Canny() मेथड दिए गए इमेज पर Canny एज डिटेक्शन एल्गोरिदम लागू करता है। यह मेथड स्वीकार करता है -

  • स्रोत और गंतव्य इमेजेज का प्रतिनिधित्व करने वाले दो Mat ऑब्जेक्ट्स।

  • थ्रेशोल्ड मानों को रखने के लिए दो डबल वेरिएबल्स।

दिए गए इमेज के एज Canny एज डिटेक्टर का उपयोग करके डिटेक्ट करने के लिए -

  • Imgcodecs क्लास के imread() मेथड का उपयोग करके स्रोत इमेज की सामग्री पढ़ें।

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

  • परिणामी (ग्रे) इमेज को Imgproc क्लास के blur() मेथड का उपयोग करके कर्नेल मान 3 के साथ ब्लर करें।

  • Imgproc के canny() मेथड का उपयोग करके ब्लर इमेज पर Canny एज डिटेक्शन एल्गोरिदम लागू करें।

  • सभी मान 0 के साथ एक खाली मैट्रिक्स बनाएं।

  • Mat क्लास के copyTo() मेथड का उपयोग करके डिटेक्टेड एज को इसमें जोड़ें।

उदाहरण

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;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class EdgeDetection extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        // OpenCV कोर लाइब्रेरी लोड करना
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        String file = "D:\\Images\\win2.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // एज, स्रोत, गंतव्य स्टोर करने के लिए खाली मैट्रिक्स बनाना
        Mat gray = new Mat(src.rows(), src.cols(), src.type());
        Mat edges = new Mat(src.rows(), src.cols(), src.type());
        Mat dst = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
        
        // इमेज को ग्रे में कनवर्ट करना
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGB2GRAY);
        
        // इमेज ब्लर करना
        Imgproc.blur(gray, edges, new Size(3, 3));
        
        // एज डिटेक्ट करना
        Imgproc.Canny(edges, edges, 100, 100*3);
        
        // डिटेक्टेड एज को गंतव्य मैट्रिक्स में कॉपी करना
        src.copyTo(dst, edges);
        
        // मैट्रिक्स को JavaFX राइटेबल इमेज में कनवर्ट करना
        Image img = HighGui.toBufferedImage(dst);
        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 में Canny एज डिटेक्शन को दर्शाने वाला Java उदाहरण

आउटपुट

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

OpenCV में Canny एज डिटेक्शन को दर्शाने वाला Java उदाहरण

  1. Java का उपयोग करके OpenCV में बाइलेटरल ब्लर कैसे लागू करें? Java का उपयोग करके OpenCV में बाइलेटरल ब्लर कैसे लागू करें?

    आप लो-पास फिल्टर का उपयोग करके छवि को फ़िल्टर करके ब्लर कर सकते हैं, यह छवि से उच्च आवृत्ति सामग्री (शोर, किनारे) को हटा देता है। बाइलेटरल फ़िल्टरिंग OpenCV द्वारा प्रदान की जाने वाली ब्लरिंग तकनीकों में से एक है, यह - कुशलतापूर्वक शोर हटाता है किनारों को तेज रखता है तुलनात्मक रूप से धीमा आप bila

  1. Java का उपयोग करके OpenCV में गाउशियन ब्लर कैसे लागू करें? Java का उपयोग करके OpenCV में गाउशियन ब्लर कैसे लागू करें?

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

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

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