OpenCV - Canny Edge Detection

Canny Edge Detection se utiliza para detectar los bordes en una imagen. Acepta una imagen en escala de grises como entrada y utiliza un algoritmo de varias etapas.

Puede realizar esta operación en una imagen utilizando el Canny() método del imgproc class, a continuación se muestra la sintaxis de este método.

Canny(image, edges, threshold1, threshold2)

Este método acepta los siguientes parámetros:

  • image - A Mat objeto que representa la fuente (imagen de entrada) para esta operación.

  • edges - A Mat objeto que representa el destino (bordes) de esta operación.

  • threshold1 - Una variable del tipo double que representa el primer umbral para el procedimiento de histéresis.

  • threshold2 - Una variable del tipo double que representa el segundo umbral del procedimiento de histéresis.

Ejemplo

El siguiente programa es un ejemplo que demuestra cómo realizar la operación Canny Edge Detection en una imagen determinada.

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");
   } 
}

Suponga que la siguiente es la imagen de entrada canny_input.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa anterior, obtendrá el siguiente resultado:

Image Processed

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera: