Python中cv2.Canny() 函數(shù)使用方法
Python中cv2.Canny() 函數(shù)用法詳解
一、Canny算子邊緣檢測(cè)原理及步驟
cv2.Canny() 函數(shù)是 OpenCV 中的邊緣檢測(cè)函數(shù)之一,用于檢測(cè)圖像的邊緣。它的基本原理是通過計(jì)算圖像中每個(gè)像素點(diǎn)的梯度值來檢測(cè)邊緣。具體來說,它的實(shí)現(xiàn)步驟如下:
1、對(duì)輸入圖像進(jìn)行高斯濾波,以平滑圖像并去除噪聲;
2、計(jì)算圖像的梯度,找到像素點(diǎn)處灰度值變化最大的方向和大??;
3、應(yīng)用非極大值抑制(Non-maximum Suppression),以消除可能出現(xiàn)的重復(fù)邊緣;
4、應(yīng)用雙閾值(Double Thresholding)來檢測(cè)和連接邊緣。
二、cv2.Canny() 函數(shù)的語法
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges
其中,各參數(shù)的含義如下:
- image:輸入圖像,必須為單通道灰度圖像;
- threshold1:第一個(gè)閾值,用于邊緣連接;
- threshold2:第二個(gè)閾值,用于邊緣檢測(cè);
- edges:輸出的邊緣圖像;
- apertureSize:Sobel 算子的大小,可選值為 3、5、7,默認(rèn)值為 3;
- L2gradient:是否使用 L 2 L_2L 2 范數(shù)計(jì)算梯度大小,可選值為 True 和 False,默認(rèn)值為 False。
- cv2.Canny() 函數(shù)的返回值為邊緣圖像。
注:第一個(gè)閾值參數(shù)為低閾值,用于確定哪些梯度變化被認(rèn)為是潛在的邊緣。所有梯度值高于低閾值的像素點(diǎn)都被認(rèn)為是潛在的邊緣點(diǎn)。第二個(gè)閾值參數(shù)為高閾值,用于確定哪些潛在的邊緣點(diǎn)是真正的邊緣。所有梯度值高于高閾值的像素點(diǎn)都被認(rèn)為是真正的邊緣點(diǎn)。同時(shí),所有梯度值低于低閾值的像素點(diǎn)都被認(rèn)為不是邊緣點(diǎn)。在實(shí)際應(yīng)用中,合適的閾值參數(shù)需要根據(jù)具體圖像和任務(wù)進(jìn)行調(diào)整,以獲得最佳效果。通常,可以通過試驗(yàn)不同的參數(shù)值來確定最佳的閾值參數(shù)。
三、應(yīng)用示例
下面是一個(gè)使用 cv2.Canny() 函數(shù)進(jìn)行邊緣檢測(cè)的例子:
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imshow('Original Image', img)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()在上面的例子中,我們將一張彩色圖像讀入,將其轉(zhuǎn)化為灰度圖像后,使用 cv2.Canny() 函數(shù)進(jìn)行邊緣檢測(cè)。其中,第一個(gè)閾值為 100,第二個(gè)閾值為 200。最后,我們將原始圖像和邊緣圖像一起顯示出來。
到此這篇關(guān)于Python中cv2.Canny() 函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)Python cv2.Canny() 函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用tensorboard可視化loss和acc的實(shí)例
今天小編就為大家分享一篇使用tensorboard可視化loss和acc的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python使用pypandoc將markdown文件和LaTex公式轉(zhuǎn)為word
pypandoc 是一個(gè)用于 pandoc 的輕量級(jí) Python 包裝器,支持多種格式的文檔轉(zhuǎn)換,下面我們來看看如何使用pypandoc將markdown文件和LaTex公式轉(zhuǎn)為word吧2025-04-04
關(guān)于yolov8訓(xùn)練的一些改動(dòng)及注意事項(xiàng)
Yolo是一種目標(biāo)檢測(cè)算法,目標(biāo)檢測(cè)的任務(wù)是從圖片中找出物體并給出其類別和位置,這篇文章主要給大家介紹了關(guān)于yolov8訓(xùn)練的一些改動(dòng)及注意事項(xiàng),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
python中Apriori算法實(shí)現(xiàn)講解
給大家詳細(xì)講解一下Apriori 算法在python中的實(shí)現(xiàn)過程,有需要的朋友收藏一下本片文章吧。2017-12-12

