Canny邊緣檢測用於檢測圖像中的邊緣。它接受灰度圖像作爲輸入,採用多級算法。
您可以使用imgproc類的Canny()方法對圖像執行此操作,以下是此方法的語法。
Canny(image, edges, threshold1, threshold2)
此方法接受以下參數&負;
image−AMat表示此操作的源(輸入圖像)的對象。
edges−AMat表示此操作的目標(邊)的對象。
threshold1−double類型的變量,表示滯後過程的第一個閾值。
threshold2−double類型的變量,表示滯後過程的第二個閾值。
Example
下面的程序是一個例子,演示如何對給定的圖像執行Canny邊緣檢測操作。
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"); } }
假設下面是上面程序中指定的輸入圖像canny_input.jpg。
Output
在執行上述程序時,您將得到以下輸出&負;
Image Processed
如果您打開指定的路徑,您可以按以下方式觀察輸出圖像−