13-Canny邊緣檢測

Canny邊緣檢測主要思路步驟如下:
1,使用高斯濾波器,以平滑圖像,濾除噪聲
2,計算圖像中每個像素點的梯度強度和方向
3,應用非極大值抑制,以消除邊緣檢測帶來的雜散響應
4,應用雙閾值檢測來確定真實的潛在的邊緣
5,通過抑制孤立的弱邊緣最終完成邊緣檢測

1,高斯濾波器:中間點比較大,越邊緣越小

在這里插入圖片描述

2,梯度和方向:用到Sobel算子,含有x和y兩個方向

在這里插入圖片描述
在這里插入圖片描述

3,非極大值抑制

在這里插入圖片描述
在這里插入圖片描述

4,雙閾值檢測

A超過maxVal保留作為邊界處理,B和C都在minVal和maxVal之間,但是C連有邊界A,所以C保留,而B沒有連有邊界故舍棄,當然在minVal之下毫無疑問也都舍棄
在這里插入圖片描述
cv2.Canny(img,120,250)
第一個參數:圖像對象名稱
第二個參數:minVal
第三個參數:maxVal
例如:minVal越小表示需要檢測出更多的邊界,相當于門檻越低,可能檢測出來的邊界并不那么是一個邊界
同樣,值越大要求越高,值越小要求越低

import cv2
import numpy as npdef show_photo(name,picture):cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()#設定不同的閾值進行比較    
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',cv2.IMREAD_GRAYSCALE)
v1 = cv2.Canny(img,80,150)
v2 = cv2.Canny(img,50,100)res = np.hstack((img,v1,v2))#將三個圖像橫向展示,當然vstack就是列向展示
show_photo('YT,(80,150),(50,100)',res)#設定不同的閾值進行比較  
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',cv2.IMREAD_GRAYSCALE)
v1 = cv2.Canny(img,120,250)
v2 = cv2.Canny(img,50,100)res = np.hstack((img,v1,v2))#將三個圖像橫向展示,當然vstack就是列向展示
show_photo('YT,(120,250),(50,100)',res)

設置不同的閾值,效果如下:
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378714.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c# uri.host_C#| Uri.IsHexEncoding()方法與示例

c# uri.hostUri.IsHexEncoding()方法 (Uri.IsHexEncoding() Method) Uri.IsHexEncoding() method is a static method or Uri class. Which is used to return that given string is hex-encoded or not? If the given string is hex coded then it returns true otherwise it…

一位老鳥對 23 種設計模式的有趣見解(轉)

在網絡上流暢很廣的一篇舊文,暫時沒找到原作者,目前所看到的最早轉載時間是 2005 年 2 月 28 日。作者用輕松的語言,形象解釋了 23 種模式,有很好的啟發作用。創建型模式 1、FACTORY—追MM少不了請吃飯了,麥當勞的雞翅…

微機原理——移位指令

例題 思路 選擇移位語句,右移,將AL移出的送入DX左端,將BL移出的送入DX左端。循環八次 MOV AL,01100101B; MOV BL,11011010B; XOR DX,DX;兩個值相同,異或結果為0。等效:MOV DX,0 MOV CX,8;count L1: SHR AL,1;邏輯右…

14-圖像金字塔

由第一個圖可知,圖像金字塔這無非就是對圖像進行放大和縮小罷了 1,高斯金字塔 向下采樣方法(縮小),越采樣越小,即從金字塔底部向上采樣 cv2.pyrDown(img) 向上采樣方法(放大),越采樣越大,即從金字塔頂…

JAVA和javascrito_JAVA 和JavaScript的split方法異同

Split的方法很常用,除了str.split("regex"),其實還可以多傳一個參數:str.split("regex", limit)。但是要注意,JavaScript和java的split中limit參數作用是不同的。簡單說,JavaScript中,…

如果__name__ =='__main__':在Python中怎么辦?

In order to understand the details of __name__ variable and the if condition, let us go through a simple exercise. Run a simple python file with just the following lines and run the file as python3 code, 為了了解__name__變量和if條件的詳細信息,讓…

Eclipse C/C++開發環境搭建

1 Eclipse的安裝 到http://java.sun.com/j2se/1.5.0/download.jsp 下載JRE安裝; 到http://eclipse.org下載Eclipse安裝。(這兒可以下載Java版本的,也可以下載C/C 版本的) 2 對于下載的Java版本或著只下載Eclipse IDE的&#xff0c…

微機原理——尋址方式總結

一、操作數的尋址方式 立即尋址方式 格式: 操作碼 數字表達式(將數據送入寄存器中) 源操作數可以是8位也可以是16位。 MOV AH, F5H (字節操作) F5H稱為立即數(8位操作數) MOV AL, 8AH (字節操作) 8AH稱為…

15-輪廓檢測

邊緣是零零散散的,而輪廓是一個整體 cv2.findContours(img,mode,method) img:輸入圖像對象名稱 mode:輪廓檢索模式 RETR_EXTERNAL:只檢索最外面的輪廓 RETR_LIST:檢索所有的輪廓,并將其保存到一條鏈表當中…

拋硬幣仿真實驗java_探索HyperLogLog算法(含Java實現)

引言HyperLogLog算法經常在數據庫中被用來統計某一字段的Distinct Value(下文簡稱DV),比如Redis的HyperLogLog結構,出于好奇探索了一下這個算法的原理,無奈中文資料很少,只能直接去閱讀論文以及一些英文資料,總結成此文…

kotlin鍵值對數組_Kotlin程序以升序對數組進行排序

kotlin鍵值對數組Given an array, we have to sort its elements in ascending order. 給定一個數組,我們必須按升序對其元素進行排序。 Example: 例: Input:arr [10, 20, 5, 2, 30]Output:sorted array (Ascending Order): [2, 5, 10, 20, 30]在Kotl…

微機原理——總線和時序

前提 8088有兩個組態: 最大組態和最小組態,通過引腳MN/MX*的電平決定組態。(*表示低電平有效) 兩種組態沒有本質區別。 8088的引腳: 引腳可分為下面幾種類別: 1、數據和地址引腳 2、讀寫控制引腳 3、中斷…

PHP站內搜索:多關鍵字查找,加亮顯示

1、SQL語句中的模糊查找LIKE條件一般用在指定搜索某字段的時候, 通過"% _" 通配符的作用實現模糊查找功能,通配符可以在前面也可以在后面或前后都有。搜索以PHP100開頭: SELECT * FROM teble WHERE title LIKE PHP100% 搜索以PHP100結束&…

16-模板匹配

cv2.matchTemplate(img,template,cv2.TM_SQDIFF) 參數一:原圖圖像對象名稱 參數二:模板圖像對象名稱 參數三:差別程度的計算方法(六選一推薦使用帶歸一化的) 模板匹配和卷積原理很像,模板從原圖像上從原點開始滑動,計…

對MySQL性能影響關系緊密的五大配置參數

以下的文章主要是對MySQL性能影響關系緊密的五大配置參數的介紹,我前幾天在相關網站看見對MySQL性能影響關系緊密的五大配置參數的資料,覺得挺好,就拿出來供大家分享,望你能有所收獲。(一)連接 連接通常來自Web服務器,…

JAVA安裝作用_jdk安裝配置及其作用

2.安裝好了就是去配置路徑了,我的是win7系統,步驟如下:桌面上的計算機右擊-》高級系統設置—》環境變量-》系統變量-》新建一共要新建三個變量JAVA_HOME,PATH和CLASSPATH1>JAVA_HOME:(這么寫為了方便以后可能改動jdk的安裝路徑&#xff0c…

用C#開發Windows應用程序

To develop windows application, we need to using studio and follow some steps: 要開發Windows應用程序 ,我們需要使用studio并遵循一些步驟: Step 1) First of all we launch visual studio. 步驟1)首先,我們啟動Visual Studio。 Ste…

圖像分割——基于二維灰度直方圖的閾值處理

前言 像素灰度值僅僅反映了像素灰度級的幅值大小,并沒有反映出像素與鄰域的空間相關信息。 二維灰度直方圖的概念 二維灰度直方圖:像素的灰度值分布和鄰域的平均灰度值分布構成的二維直方圖 二維直方圖的值N(i,j) 。其中,if(x,y) 圖像(x,y…

多維角度聊聊結對編程

在敏捷軟件開發的各種實踐中,結對編程(Pair Programming,下文簡稱Pair)是特別有爭議的。Pair有一個特點,那就是還沒有進行過任何Pair實踐前,你很可能對它已經有了“喜歡” 或者是“討厭”的印象。如果有人問…

17-直方圖

直方圖 何為直方圖?沒那么高大上,其實就是二維統計圖。每個照片都是有像素點所組成,當然也是[0,255],直方圖就是統計每個值所對應的像素點有幾個。 直方圖橫坐標表示0-255這些像素點值;縱坐標表示對應像素點值的個數有…