本期我們一起看看如何進行圖像邊緣的檢測。邊緣檢測通常用于理解圖像中的對象,幫助機器做出更好的預測。編寫邊緣檢測程序是了解機器如何看待外界的好方法。現在就讓我們使用python進行邊緣檢測吧。
我們將為該項目使用兩個主要模塊:Numpy,Matplotlib和OpenCV。Matplotlib是一個完整的庫,用于在Python中生成靜態,動畫和交互式可視化。OpenCV是一個高度優化的庫,專注于實時應用程序。
OpenCV
OpenCV(開源計算機視覺庫)是一個開源計算機視覺和機器學習軟件庫。OpenCV的構建旨在為計算機視覺應用程序提供通用的基礎結構,并加速商業產品中的機器感知。作為BSD許可的產品,OpenCV使企業可以輕松地使用和修改代碼。
參考:https://opencv.org
讓我們從安裝庫開始。
安裝庫
我們必須安裝庫,以便我們的程序正常運行。如前所述,我們將只需要兩個庫。使用PIP庫管理器將它們安裝在一行中:
pip安裝numpy matplotlib opencv-python
安裝過程完成后,我們可以將它們導入到我們的代碼中。我們將使用Atom文本編輯器完成。
導入cv2 導入numpy作為np 導入matplotlib.pyplot作為plt
邊緣檢測功能
現在,我們可以轉到有趣的部分,在這里我們將編寫邊緣檢測功能。您會驚訝于使用OpenCV軟件包如此簡單。此OpenCV檢測模型也稱為Canny邊緣檢測模型。我們的功能包括三個部分:邊緣檢測,可視化,最后保存結果。
邊緣檢測
def simple_edge_detection(image): edgesdetected = cv2.Canny(image,100,200) images = [image,edgesdetected]
了解代碼:
Canny是我們調用的使用OpenCV進行邊緣檢測的方法。
Image是函數的參數,這意味著我們將在調用函數時傳遞圖像。這樣,您可以輕松地用不同的圖像測試程序。
100和200是磁滯閾值的最小值和最大值。
可視化
location = [121,122] 對于loc,zip中的edge_image(位置,圖片): plt.subplot(loc) plt.imshow(edge_image,cmap ='gray')
了解代碼:
繪圖部分需要位置數組。
然后,我們同時可視化原始圖像和邊緣檢測圖像。
cmap參數用于更改圖像的顏色。就我們而言,我們正在將它們轉換為灰色。
保存結果
該功能的最后一部分將保存邊緣檢測圖像和比較圖。OpenCv和Matplotlib軟件包;imwrite和savefig函數都為我們提供了這個功能。在最后一行中,show函數可以向我們顯示創建的圖。
cv2.imwrite('edge_detected.png',edgesdetected)plt.savefig('edge_plot.png')plt.show()
選擇圖片
我們要找到一張測試Canny Edge檢測程序的圖像。下載圖像后,請確保將它們放入與項目相同的文件夾中。這將有助于輕松地將它們導入程序。讓我們定義一個圖像變量并導入圖像。這是使用OpenCV讀取圖像的方法:
img = cv2.imread('test_image.jpg',0)
這是我將測試模型的示例圖像:
運行程序
是時候運行程序了。到目前為止,沒有任何東西可以觸發該功能。我們必須調用函數也不要忘記將圖像作為參數傳遞進去:
simple_edge_detection(img)
結果如下:
我們已經使用Python創建了邊緣檢測的代碼。
責任編輯:彭菁
-
邊緣檢測
+關注
關注
0文章
92瀏覽量
18211 -
程序
+關注
關注
117文章
3787瀏覽量
81049 -
代碼
+關注
關注
30文章
4788瀏覽量
68616
原文標題:基于OpenCV的簡單邊緣檢測模型
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論