演算法 基於OpenCV的Canny邊緣檢測演算法

2021-10-06 02:21:18 字數 1278 閱讀 8755

canny邊緣檢測運算元是john f. canny於 1986 年開發出來的乙個多級邊緣檢測演算法。更為重要的是 canny 創立了邊緣檢測計算理論解釋這項技術如何工作。

canny邊緣檢測演算法可以分為以下5個步驟:

canny邊緣檢測的公式推導:

高斯濾波:對影象進行平滑處理

計算梯度幅度和方向(採用sobel運算元)

非極大值抑制

雙閾值檢測

canny演算法**實現

#opencv讀取的格式是bgr

import cv2

import numpy as np

#matplotlib是rgb

import matplotlib.pyplot as plt

%matplotlib inline

#顯示影象的函式

defcv_show

(img,name)

: cv2.imshow(name,img)

cv2.waitkey(

) cv2.destroyallwindows(

)#讀取影象

#80 和150 分別為最大和最小的閾值,當閾值比較的大獲取較少的邊緣 閾值較大獲取較多的邊緣資訊

v1=cv2.canny(img,80,

150)

v2=cv2.canny(img,50,

100)

res = np.hstack(

(v1,v2)

)cv_show(res,

'res'

基於opencv的meanshift演算法的初步學習

meanshift 均值漂移。其核心是利用概率密度的梯度來找到區域性最優。影象上用,其實現過程就是在乙個給定的範圍,一直按要求 靠近重心的方向 迭代直到達到預期效果。由於本人以後碩士階段做影象識別和跟蹤方面的研究,索性在目標跟蹤上進一步學習。在opencv2.3中這樣定義 cvapi int cvm...

基於opencv的sauvola二值演算法

sauvola演算法是乙個比較不錯的區域性二值化演算法,有不少人也具體實現了其 但是本人覺得裡面存在一些bug和不方便opencv呼叫,所以對其適當的修改。但是修改之後,仍然就是存在一些問題,就是難以找到乙個比較大的資料型別去儲存,這個bug等以後有空再處理。不過通過修改後的 進行學習,還是很不錯的...

基於Opencv的SIFT SURF HOG的實現

sift實現 surf的實現 include include includeusing namespace std using namespace cv using namespace cv xfeatures2d int main int argc,char ar namedwindow inpu...