OpenCV canny邊緣提取演算法

2021-10-08 12:53:56 字數 1449 閱讀 2540

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函式...