Canny 邊緣偵測
邊緣偵測是電腦視覺中的一種影像處理技術,涉及辨識影像中物件的輪廓。
Canny 邊緣偵測是邊緣偵測的最佳技術之一。它旨在檢測清晰、清晰的邊緣,同時減少噪音並避免錯誤邊緣。它使用雙閾值方法來檢測影像中的邊緣:高閾值和低閾值。
img = cv2.Canny('photo.jpg') img_edges = cv2.Canny(img, 100, 200) // 100 is the low threshold // 200 is the high threshold
閾值決定什麼成為邊緣,什麼不成為邊緣。為了做出這個決定,我們使用梯度值:
- 如果梯度值高於高閾值,則將其視為強邊緣並添加到邊緣圖中。 (強邊緣)
- 如果低於低閾值,則會被忽略。 (非邊緣)
- 如果它在高閾值和低閾值之間,則僅當它連接到強邊緣時才保留。 (潛在優勢)
什麼是梯度值?
梯度值不是原始影像值。它們是透過檢查影像中像素強度變化的程度從原始影像中計算得出的數字。我們使用梯度值是因為原始影像值不能直接告訴我們邊緣在哪裡。
一個簡單的例子來說明像素強度的變化:如果兩個相鄰像素具有非常不同的值(例如 50 和 200,梯度值為 150),則存在很大的變化 - 它可能是邊緣。但如果兩個相鄰像素具有相似的值(例如 50 和 52,梯度值為 2),則變化很小,成為邊緣的可能性也很小。
計算出梯度值後,將它們與閾值進行比較,以確定什麼是強邊緣、潛在邊緣或非邊緣。
我們如何知道閾值之間的值與強邊緣相關?
透過使用一種稱為遲滯邊緣追蹤的方法,該方法決定連接的邊緣並應保持VS丟棄。演算法的工作原理是查看每個潛在邊緣像素的 8 個鄰居(直接相鄰的像素 - 頂部、底部、左側、右側和對角線)。任何直接或間接連接到強邊緣的像素都包含在最終結果中。
邊緣追蹤的工作原理:
50 80 110 90 70 250 190 120 60 180 150 70 40 60 80 50
想像一下上面的漸層圖:
應用閾值(低 = 100,高 = 200)後,強邊緣像素(> 200)立即保留為邊緣。這裡,只有像素 250 被標記為強邊緣。
潛在邊緣像素 (100–200) 為 110、190、120、180 和 150。現在我們有了潛在邊緣池,我們執行邊緣追蹤來決定哪些要保留,哪些要丟棄。此演算法檢查是否有任何潛在邊直接或間接連接到強邊 (250)。
例如:
- 190 是 250 的鄰居,它直接連接到強邊,因此保留。
- 150 是 190 的鄰居,它間接連接到強邊,因此也被保留。
弱邊緣像素(
以上是Canny 邊緣偵測的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

處理API認證的關鍵在於理解並正確使用認證方式。 1.APIKey是最簡單的認證方式,通常放在請求頭或URL參數中;2.BasicAuth使用用戶名和密碼進行Base64編碼傳輸,適合內部系統;3.OAuth2需先通過client_id和client_secret獲取Token,再在請求頭中帶上BearerToken;4.為應對Token過期,可封裝Token管理類自動刷新Token;總之,根據文檔選擇合適方式,並安全存儲密鑰信息是關鍵。

如何在Python中高效處理大型JSON文件? 1.使用ijson庫流式處理,通過逐項解析避免內存溢出;2.若為JSONLines格式,可逐行讀取並用json.loads()處理;3.或先將大文件拆分為小塊再分別處理。這些方法有效解決內存限制問題,適用於不同場景。

在Python中,用for循環遍曆元組的方法包括直接迭代元素、同時獲取索引和元素、以及處理嵌套元組。 1.直接使用for循環可依次訪問每個元素,無需管理索引;2.使用enumerate()可同時獲取索引和值,默認索引起始為0,也可指定start參數;3.對嵌套元組可在循環中解包,但需確保子元組結構一致,否則會引發解包錯誤;此外,元組不可變,循環中不能修改內容,可用\_忽略不需要的值,且建議遍歷前檢查元組是否為空以避免錯誤。

Yes,aPythonclasscanhavemultipleconstructorsthroughalternativetechniques.1.Usedefaultargumentsinthe__init__methodtoallowflexibleinitializationwithvaryingnumbersofparameters.2.Defineclassmethodsasalternativeconstructorsforclearerandscalableobjectcreati

在Python中,使用for循環配合range()函數是控制循環次數的常見方式。 1.當明確知道循環次數或需按索引訪問元素時使用;2.range(stop)從0到stop-1,range(start,stop)從start到stop-1,range(start,stop,step)加入步長;3.注意range不包含結束值,且在Python3返回可迭代對象而非列表;4.可通過list(range())轉換為列表,倒序時用負步長。

使用Python調用WebAPI獲取數據的關鍵在於掌握基本流程和常用工具。 1.使用requests發起HTTP請求是最直接的方式,通過get方法獲取響應並用json()解析數據;2.對於需要認證的API,可通過headers添加token或key;3.需檢查響應狀態碼,推薦使用response.raise_for_status()自動處理異常;4.面對分頁接口,可通過循環依次請求不同頁面並加入延時避免頻率限制;5.處理返回的JSON數據時需根據結構提取信息,複雜數據可用pandas轉換為Data

Python的onelineifelse是三元操作符,寫法為xifconditionelsey,用於簡化簡單的條件判斷。它可用於變量賦值,如status="adult"ifage>=18else"minor";也可用於函數中直接返回結果,如defget_status(age):return"adult"ifage>=18else"minor";雖然支持嵌套使用,如result="A"i

本文為您精選了多個頂級的Python“成品”項目網站與高水平“大片”級學習資源入口。無論您是想尋找開發靈感、觀摩學習大師級的源代碼,還是系統性地提昇實戰能力,這些平台都是不容錯過的寶庫,能幫助您快速成長為Python高手。
