opencv学习笔记18:canny算子边缘检测原理及其函数使用
canny邊緣檢測原理
去噪:邊緣檢測容易受到噪聲的影響,在此之間,先去噪,通常采用高斯濾波器。opencv學(xué)習(xí)筆記11:圖像濾波(均值,方框,高斯,中值)
梯度:對去噪后的圖像采用sobel算子計算梯度和方向。
這里的梯度不同于前面值只計算大小,這里還需計算方向。
梯度大小和方向公式見下
梯度的方向一般與邊界垂直,分為四類:垂直,水平,和兩個對角線。
非極大值抑制:在獲得梯度和方向,去除所有不是邊界的點。實現(xiàn)方向:逐漸遍歷像素點,判斷當(dāng)前像素點是否是周圍像素點中具有相同方向梯度的最大值。是保留,不是則為0.
滯后閾值:有兩個閾值,minVal,maxVal
處理方法見圖:
大于maxVal保留,
小于maxVal但大于minVal且與邊界相連保留。
其他舍棄
canny邊緣檢測函數(shù)使用
edges=cv2.Canny(image,threshold1,threshold2)
edges:處理結(jié)果
image:原始圖像
threshold1:minVal
threshold2:maxVal
如果想讓邊界細節(jié)更多,則把threshold1和threshold2設(shè)小些。
python+OpenCV
import cv2 import numpy as np o=cv2.imread("lena.bmp",cv2.IMREAD_GRAYSCALE)#讀取灰色圖 r=cv2.Canny(o,100,200) cv2.imshow("original",o) cv2.imshow("result",r) cv2.waitKey() cv2.destroyAllWindows()改變threshold
import cv2 import numpy as np o=cv2.imread("lena.bmp",cv2.IMREAD_GRAYSCALE) r=cv2.Canny(o,64,100) cv2.imshow("original",o) cv2.imshow("result",r) cv2.waitKey() cv2.destroyAllWindows()更小的值有更多的細節(jié)
總目錄鏈接:
python3+opencv學(xué)習(xí)筆記匯總目錄(適合基礎(chǔ)入門學(xué)習(xí))
進階版筆記:
opencv進階學(xué)習(xí)筆記11:cannny邊緣檢測,直線檢測,圓檢測
電氣專業(yè)的計算機小白,寫博文不容易,如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的opencv学习笔记18:canny算子边缘检测原理及其函数使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信支付分在哪里开通
- 下一篇: 2020年福布斯中国富豪榜 一匹黑马入围