
- OpenCV教程
- OpenCV - 首頁
- OpenCV - 概述
- OpenCV - 環境配置
- OpenCV - 儲存影像
- OpenCV - 讀取影像
- OpenCV - 寫入影像
- OpenCV - 圖形使用者介面
- 繪圖函式
- OpenCV - 繪製圓形
- OpenCV - 繪製直線
- OpenCV - 繪製矩形
- OpenCV - 繪製橢圓
- OpenCV - 繪製折線
- OpenCV - 繪製凸多邊形
- OpenCV - 繪製帶箭頭的直線
- OpenCV - 新增文字
- 濾波
- OpenCV - 雙邊濾波
- OpenCV - 方框濾波
- OpenCV - 平方盒濾波
- OpenCV - Filter2D
- OpenCV - 膨脹
- OpenCV - 腐蝕
- OpenCV - 形態學操作
- OpenCV - 影像金字塔
- Sobel導數
- OpenCV - Sobel運算元
- OpenCV - Scharr運算元
- 攝像頭和人臉檢測
- OpenCV - 使用攝像頭
- OpenCV - 圖片中的人臉檢測
- 使用攝像頭進行人臉檢測
- OpenCV有用資源
- OpenCV - 快速指南
- OpenCV - 有用資源
- OpenCV - 討論
OpenCV - Canny邊緣檢測
Canny邊緣檢測用於檢測影像中的邊緣。它接收灰度影像作為輸入,並使用多階段演算法。
您可以使用imgproc類的Canny()方法對影像執行此操作,以下是此方法的語法。
Canny(image, edges, threshold1, threshold2)
此方法接受以下引數:
image − 表示此操作的源(輸入影像)的Mat物件。
edges − 表示此操作的目標(邊緣)的Mat物件。
threshold1 − 表示滯後過程的第一個閾值的雙精度型別變數。
threshold2 − 表示滯後過程的第二個閾值的雙精度型別變數。
示例
以下程式是一個示例,演示如何在給定影像上執行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。

輸出
執行上述程式後,您將獲得以下輸出:
Image Processed
如果開啟指定路徑,您可以觀察到輸出影像如下:

廣告