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);
}
}
इनपुट इमेज

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