OpenCV半小時(shí)掌握基本操作之邊緣檢測
【OpenCV】⚠️高手勿入! 半小時(shí)學(xué)會(huì)基本操作⚠️ 邊緣檢測
概述
OpenCV 是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺庫, 支持多語言, 功能強(qiáng)大. 今天小白就帶大家一起攜手走進(jìn) OpenCV 的世界. (第 12 課)
Scharr 算子
Scharr 算子和 Sobel 算子基本一樣. 只是卷積核系數(shù)不同. Scharr 算子對(duì)邊界更加敏感, 也更容易誤判.
卷積核參數(shù):
例子:
# Scharr 算子 scharr_x = cv2.Scharr(img, cv2.CV_64F, 1, 0) scharr_y = cv2.Scharr(img, cv2.CV_64F, 0, 1) # 取絕對(duì)值 scharr_x = cv2.convertScaleAbs(scharr_x) scharr_y = cv2.convertScaleAbs(scharr_y) # 融合 scharr_xy = cv2.addWeighted(scharr_x, 0.5, scharr_y, 0.5, 0) # 展示圖片 cv2.imshow("scharr_xy", scharr_xy) cv2.waitKey(0) cv2.destroyAllWindows()
輸出結(jié)果:
Laplacian 算子
拉普拉斯算子 (Laplacian) 是圖像二階空間導(dǎo)數(shù)的二維向同性測度. 拉普拉斯算子可以突出圖像中強(qiáng)度發(fā)生快速變化的區(qū)域, 因此常用在邊緣檢測任務(wù)當(dāng)中.
在進(jìn)行 Laplacian 操作之前通常需要先用高斯平滑濾波器 (Gaussian Blur) 降低 Laplacian 算子對(duì)于噪聲的敏感性.
卷積核參數(shù):
例子:
# 讀取圖片, 并準(zhǔn)換成灰度圖 img = cv2.imread("Mona_Lisa.jpg", cv2.IMREAD_GRAYSCALE) # 高斯濾波器 (3 X 3) img = cv2.GaussianBlur(img, (3, 3), sigmaX=0.1) # Laplacian 算子 laplacian = cv2.Laplacian(img, cv2.CV_64F) # 取絕對(duì)值 laplacian = cv2.convertScaleAbs(laplacian) # 展示圖片 cv2.imshow("laplacian", laplacian) cv2.waitKey(0) cv2.destroyAllWindows()
輸出結(jié)果:
注: Sigma 值越小, 模板的中心系數(shù)就越大, 周圍的系數(shù)較小, 平滑的效果就不是很明顯.
Sobel vs Scharr vs Laplacian
Canny 邊緣檢測
Canny 邊緣檢測是非常流行的一種邊緣檢測算法, 由 John Canny 在 1986 年提出.
步驟:
- 使用高斯濾波器, 平滑圖像, 消除噪聲
- 計(jì)算圖像中每個(gè)像素點(diǎn)的梯度強(qiáng)度和方向
- 使用沒極大值抑制 (Non-Maximum Suppression) 消除邊緣檢測帶來的雜散響應(yīng)
- 使用雙閾值檢測 (Double Threshold) 來確定真實(shí)和潛在的邊緣
- 通過抑制孤立的弱邊緣最終完成邊緣檢測
高斯濾波器
梯度和方向
非極大值抑制
雙閾值檢測
例子
# 讀取圖片, 并轉(zhuǎn)換成灰度圖 img = cv2.imread("Mona_Lisa.jpg", cv2.IMREAD_GRAYSCALE) # Canny邊緣檢測 out1 = cv2.Canny(img, 50, 150) out2 = cv2.Canny(img, 100, 150) # 合并 canny = np.hstack((out1, out2)) # 展示圖片 cv2.imshow("canny", canny) cv2.waitKey(0) cv2.destroyAllWindows()
輸出結(jié)果:
到此這篇關(guān)于OpenCV半小時(shí)掌握基本操作之邊緣檢測的文章就介紹到這了,更多相關(guān)OpenCV邊緣檢測內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)鳶尾花三種聚類算法(K-means,AGNES,DBScan)
這篇文章主要介紹了python實(shí)現(xiàn)鳶尾花三種聚類算法(K-means,AGNES,DBScan),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06使用Python對(duì)Excel進(jìn)行讀寫操作
學(xué)習(xí)Python的過程中,我們會(huì)遇到Excel的讀寫問題。這時(shí),我們可以使用xlwt模塊將數(shù)據(jù)寫入Excel表格中,使用xlrd模塊從Excel中讀取數(shù)據(jù)。下面我們介紹如何實(shí)現(xiàn)使用Python對(duì)Excel進(jìn)行讀寫操作。2017-03-03python利用os模塊編寫文件復(fù)制功能——copy()函數(shù)用法
這篇文章主要介紹了python利用os模塊編寫文件復(fù)制功能——copy()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07python 兩個(gè)一樣的字符串用==結(jié)果為false問題的解決
這篇文章主要介紹了python 兩個(gè)一樣的字符串用==結(jié)果為false問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python3 字典dictionary入門基礎(chǔ)附實(shí)例
Python字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組等其他容器模型,字典由鍵和對(duì)應(yīng)值成對(duì)組成,字典也被稱作關(guān)聯(lián)數(shù)組或哈希表2020-02-02Python使用matplotlib實(shí)現(xiàn)的圖像讀取、切割裁剪功能示例
這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)的圖像讀取、切割裁剪功能,結(jié)合實(shí)例形式分析了Python基于matplotlib操作圖片的加載、讀取、坐標(biāo)控制及裁剪相關(guān)操作技巧,需要的朋友可以參考下2018-04-04利用Python?實(shí)現(xiàn)分布式計(jì)算
這篇文章主要介紹了利用Python?實(shí)現(xiàn)分布式計(jì)算,文章通過借助于?Ray展開對(duì)分布式計(jì)算的實(shí)現(xiàn),感興趣的小伙伴可以參考一下2022-05-05Python網(wǎng)絡(luò)爬蟲與信息提取(實(shí)例講解)
下面小編就為大家?guī)硪黄狿ython網(wǎng)絡(luò)爬蟲與信息提取(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08