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: