OpenCV Canny邊緣檢測

2021-08-11 18:14:08 字數 2232 閱讀 6117

文章介紹如何用opencv-python來使用canny運算元。

本文介紹使用opencv-python實現基本的濾波處理

本文不介詳細的理論知識,讀者可從其他資料中獲取相應的背景知識。筆者推薦清華大學出版社的《影象處理與計算機視覺演算法及應用(第2版) 》。

原型:

opencv-python中canny函式的原型為:

edge =cv2.canny(image, threshold1, threshold2[, edges[, aperturesize[, l2gradient ]]])
必要引數:

第乙個引數是需要處理的原影象,該影象必須為單通道的灰度圖;

第二個引數是閾值1;

第三個引數是閾值2。

其中較大的閾值2用於檢測影象中明顯的邊緣,但一般情況下檢測的效果不會那麼完美,邊緣檢測出來是斷斷續續的。所以這時候用較小的第乙個閾值用於將這些間斷的邊緣連線起來。

可選引數中aperturesize就是sobel運算元的大小。而l2gradient引數是乙個布林值,如果為真,則使用更精確的l2範數進行計算(即兩個方向的倒數的平方和再開放),否則使用l1範數(直接將兩個方向導數的絕對值相加)。

具體的演算法可參見清華大學出版社的《影象處理與計算機視覺演算法及應用(第2版) 》第二章,其中有canny演算法的詳細描述及實現。

函式返回一副二值圖,其中包含檢測出的邊緣。

使用:

canny函式的使用很簡單,只需指定最大和最小閾值即可。如下:

首先,由於canny只能處理灰度圖,所以將讀取的影象轉成灰度圖。

用高斯平滑處理原影象降噪。

呼叫canny函式,指定最大和最小閾值,其中aperturesize預設為3。

處理結果如下:

這個程式只是靜態的,在github上有乙個可以在執行時調整閾值大小的程式。其**如下:

opencv Canny邊緣檢測

opencv 中的 canny 邊緣檢測 了解 canny 邊緣檢測的概念 學習函式 cv2.canny 1 原理 canny 邊緣檢測是一種非常流行的邊緣檢測演算法,是 john f.canny 在1986 年提出的。它是乙個有很多步構成的演算法,我們接下來會逐步介紹。1.1 雜訊去除 由於邊緣檢...

《OpenCV》 Canny 邊緣檢測

1 去噪 邊緣檢測容易受到影象中雜訊的影響,故首先需要用5x5的高斯濾波器去除影象中的雜訊。2 計算影象的強度梯度 將去噪 平滑 後的影象由sobel核心分別在水平和垂直方向上求導 一階微分 得到gx和gy。根據這兩幅梯度圖,求得每個畫素的邊緣梯度大小和方向。3 非極大值抑制 得到梯度大小和方向後,...

opencv Canny邊緣檢測

原影象 cv imshow 原影象 imagesource cv mat image cv gaussianblur imagesource,image,cv size 3,3 0 過濾 cv canny image,image,50,100 邊緣檢測 第乙個引數 輸入影象 八位的影象 第二個引數 ...