OpenCV - Détection de Canny Edge

Canny Edge Detection est utilisé pour détecter les contours d'une image. Il accepte une image en échelle de gris comme entrée et utilise un algorithme à plusieurs étages.

Vous pouvez effectuer cette opération sur une image en utilisant le Canny() méthode de la imgproc class, voici la syntaxe de cette méthode.

Canny(image, edges, threshold1, threshold2)

Cette méthode accepte les paramètres suivants -

  • image - Un Mat objet représentant la source (image d'entrée) de cette opération.

  • edges - Un Mat objet représentant la destination (arêtes) de cette opération.

  • threshold1 - Une variable de type double représentant le premier seuil de la procédure d'hystérésis.

  • threshold2 - Une variable de type double représentant le deuxième seuil de la procédure d'hystérésis.

Exemple

Le programme suivant est un exemple montrant comment effectuer une opération de détection de Canny Edge sur une image donnée.

import org.opencv.core.Core;
import org.opencv.core.Mat;

import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class CannyEdgeDetection {
   public static void main(String args[]) throws Exception {
      // Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

      // Reading the Image from the file and storing it in to a Matrix object
      String file = "E:/OpenCV/chap17/canny_input.jpg";

      // Reading the image
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat gray = new Mat();

      // Converting the image from color to Gray
      Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
      Mat edges = new Mat();

      // Detecting the edges
      Imgproc.Canny(gray, edges, 60, 60*3);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap17/canny_output.jpg", edges);
      System.out.println("Image Loaded");
   } 
}

Supposons que ce qui suit est l'image d'entrée canny_input.jpg spécifié dans le programme ci-dessus.

Production

Lors de l'exécution du programme ci-dessus, vous obtiendrez la sortie suivante -

Image Processed

Si vous ouvrez le chemin spécifié, vous pouvez observer l'image de sortie comme suit -