python+opencv入門-canny 邊緣檢測

python+opencv入門-canny 邊緣檢測

任務描述

參考文章
https://www.educoder.net/shixuns/2pwliuxy/challenges
本關任務:使用 OpenCV 實現圖片邊緣檢測方法,並對圖片進行邊緣檢測。

相關知識

爲了完成本關任務,你需要掌握:
1 . 什麼是邊緣檢測;
2 . 使用 OpenCV 實現圖片邊緣檢測方法。

什麼是邊緣檢測

邊緣檢測是圖像處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字圖像中亮度變化明顯的點。圖像邊緣檢測大幅度地減少了數據量,並且剔除了可以認爲不相關的信息,保留了圖像重要的結構屬性。圖像屬性中的顯著變化通常反映了屬性的重要事件和變化。如下圖:
在這裏插入圖片描述
常用的邊緣檢測模板有 Laplacian 算子、Roberts 算子、Sobel 算子、 Kirsch 算子和 Prewitt 算子等。在這裏簡單介紹下 canny 邊緣檢測,大概分爲以下五個步驟:

1.使用高斯濾波器,以平滑圖像,濾除噪聲。
2.計算圖像中每個像素點的梯度強度和方向。
3.應用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應。
4.應用雙閾值(Double-Threshold)檢測來確定真實的和潛在的邊緣。
5.通過抑制孤立的弱邊緣最終完成邊緣檢測。

使用OpenCV實現圖片邊緣檢測方法

import cv2
#加載灰度圖片
img = cv2.imread(img_path,0)
#進行canny邊緣檢測
canny_edg=cv2.Canny(img,50,150)
#保存處理後的圖片
cv2.imwrite(save_path,canny_edg)

其中 cv2.imread() 爲加載圖片方法,0 表示加載灰度圖片。cv2.Canny() 爲 canny 邊緣檢測方法,img 爲所檢測圖片。
最後將處理後的圖片保存,save_path 爲保存路徑。

編程要求

根據提示,在右側編輯器的 begin-end 間補充代碼,實現邊緣檢測方法,並對圖片進行邊緣檢測。

測試說明

程序會使用你實現的方法對圖片進行邊緣檢測,若檢測結果與正確結果差異在閾值內則視爲通關。

#encoding=utf8
import cv2
def canny_edg(img_path,save_path):    
'''    img_path:圖片儲存路徑    
save_path:圖片保存路徑    
img:處理後的圖片    '''    
#********* Begin *********#   
#加載灰度圖片    
img = cv2.imread(img_path,0)    
#進行canny邊緣檢測  
#補全代碼!!
#保存處理後的圖片    
cv2.imwrite(save_path,canny_edg)    
#********* End *********#    
return img

+++++++++++++++++++++++++answer++++++++++++++++++++++++++++++++
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章