canny是邊緣檢測演算法,在2023年提出。是乙個很好的邊緣檢測器,也是常用的影象處理方法。
canny演算法步驟:
1.高斯模糊:通過高斯模糊去掉雜訊,因為canny是最雜訊敏感的演算法:gaussianblur
2.灰度轉換:cvtcolor
3.計算梯度:soble/scharr
4.非最大訊號壓制:梯度——角度——根據角度將值量化
5.雙閾值處理(高低閾值連線):輸出二值影象
t1/t2為閾值,凡是高於t2的都保留,凡是小於t1的都拋棄,對於t1-t2之間的畫素,如果從高於t2的畫素出發大於t1而且相互連線的都保留。最終得到乙個輸出二值影象。推薦的高低閾值比值為t2:t1=3:1/3:2其中t2為高閾值,t1為低閾值。
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
'''canny邊緣提取'''
defcanny_demo
(image)
:# 1.高斯模糊:最後兩個引數給定乙個就可以自動求取另乙個,所以只給其中乙個賦值就可以
blur=cv.gaussianblur(image,(3
,3),
0)#2.灰度處理
gray=cv.cvtcolor(blur,cv.color_bgr2gray)
#3.求取梯度,也可以不用梯度,直接將灰度圖傳入cv.canny
grad_x=cv.sobel(gray,cv.cv_16sc1,1,
0)grad_y = cv.sobel(gray, cv.cv_16sc1,0,
1)#4.求邊緣
edge_output=cv.canny(grad_x,grad_y,50,
150)
#引數:x梯度,y梯度 ,低閾值,高閾值
cv.imshow(
'canny-demo'
,edge_output)
dst=cv.bitwise_and(image,image,mask=edge_output)
cv.imshow(
'color edge'
,dst)
img=cv.imread(r'd:\project\opencv\learning01\fang.png'
)cv.imshow(
'origin'
,img)
canny_demo(img)
cv.waitkey(
0)
OpenCv canny運算元提取邊緣
canny運算元是john canny在1986年發表的 中首次提出的邊緣檢測運算元,該運算元檢測效能比較好,應用廣泛。最優邊緣檢測的三個主要評價標準是 坎尼運算元進行邊緣檢測的原理和步驟如下 消除雜訊 邊緣檢測的演算法主要是基於影象強度的一階和二階微分操作 但導數通常對雜訊很敏感,邊緣檢測演算法常...
opencv Canny邊緣檢測
opencv 中的 canny 邊緣檢測 了解 canny 邊緣檢測的概念 學習函式 cv2.canny 1 原理 canny 邊緣檢測是一種非常流行的邊緣檢測演算法,是 john f.canny 在1986 年提出的。它是乙個有很多步構成的演算法,我們接下來會逐步介紹。1.1 雜訊去除 由於邊緣檢...
OpenCV Canny邊緣檢測
文章介紹如何用opencv python來使用canny運算元。本文介紹使用opencv python實現基本的濾波處理 本文不介詳細的理論知識,讀者可從其他資料中獲取相應的背景知識。筆者推薦清華大學出版社的 影象處理與計算機視覺演算法及應用 第2版 原型 opencv python中canny函式...