本期我們一起看看如何進(jìn)行圖像邊緣的檢測。邊緣檢測通常用于理解圖像中的對(duì)象,幫助機(jī)器做出更好的預(yù)測。編寫邊緣檢測程序是了解機(jī)器如何看待外界的好方法。現(xiàn)在就讓我們使用python進(jìn)行邊緣檢測吧。
我們將為該項(xiàng)目使用兩個(gè)主要模塊:Numpy,Matplotlib和OpenCV。Matplotlib是一個(gè)完整的庫,用于在Python中生成靜態(tài),動(dòng)畫和交互式可視化。OpenCV是一個(gè)高度優(yōu)化的庫,專注于實(shí)時(shí)應(yīng)用程序。
OpenCV
OpenCV(開源計(jì)算機(jī)視覺庫)是一個(gè)開源計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫。OpenCV的構(gòu)建旨在為計(jì)算機(jī)視覺應(yīng)用程序提供通用的基礎(chǔ)結(jié)構(gòu),并加速商業(yè)產(chǎn)品中的機(jī)器感知。作為BSD許可的產(chǎn)品,OpenCV使企業(yè)可以輕松地使用和修改代碼。
參考:https://opencv.org
讓我們從安裝庫開始。
安裝庫
我們必須安裝庫,以便我們的程序正常運(yùn)行。如前所述,我們將只需要兩個(gè)庫。使用PIP庫管理器將它們安裝在一行中:
pip安裝numpy matplotlib opencv-python
安裝過程完成后,我們可以將它們導(dǎo)入到我們的代碼中。我們將使用Atom文本編輯器完成。
導(dǎo)入cv2 導(dǎo)入numpy作為np 導(dǎo)入matplotlib.pyplot作為plt
邊緣檢測功能
現(xiàn)在,我們可以轉(zhuǎn)到有趣的部分,在這里我們將編寫邊緣檢測功能。您會(huì)驚訝于使用OpenCV軟件包如此簡單。此OpenCV檢測模型也稱為Canny邊緣檢測模型。我們的功能包括三個(gè)部分:邊緣檢測,可視化,最后保存結(jié)果。
邊緣檢測
def simple_edge_detection(image): edgesdetected = cv2.Canny(image,100,200) images = [image,edgesdetected]
了解代碼:
Canny是我們調(diào)用的使用OpenCV進(jìn)行邊緣檢測的方法。
Image是函數(shù)的參數(shù),這意味著我們將在調(diào)用函數(shù)時(shí)傳遞圖像。這樣,您可以輕松地用不同的圖像測試程序。
100和200是磁滯閾值的最小值和最大值。
可視化
location = [121,122] 對(duì)于loc,zip中的edge_image(位置,圖片): plt.subplot(loc) plt.imshow(edge_image,cmap ='gray')
了解代碼:
繪圖部分需要位置數(shù)組。
然后,我們同時(shí)可視化原始圖像和邊緣檢測圖像。
cmap參數(shù)用于更改圖像的顏色。就我們而言,我們正在將它們轉(zhuǎn)換為灰色。
保存結(jié)果
該功能的最后一部分將保存邊緣檢測圖像和比較圖。OpenCv和Matplotlib軟件包;imwrite和savefig函數(shù)都為我們提供了這個(gè)功能。在最后一行中,show函數(shù)可以向我們顯示創(chuàng)建的圖。
cv2.imwrite('edge_detected.png',edgesdetected)plt.savefig('edge_plot.png')plt.show()
選擇圖片
我們要找到一張測試Canny Edge檢測程序的圖像。下載圖像后,請(qǐng)確保將它們放入與項(xiàng)目相同的文件夾中。這將有助于輕松地將它們導(dǎo)入程序。讓我們定義一個(gè)圖像變量并導(dǎo)入圖像。這是使用OpenCV讀取圖像的方法:
img = cv2.imread('test_image.jpg',0)
這是我將測試模型的示例圖像:
運(yùn)行程序
是時(shí)候運(yùn)行程序了。到目前為止,沒有任何東西可以觸發(fā)該功能。我們必須調(diào)用函數(shù)也不要忘記將圖像作為參數(shù)傳遞進(jìn)去:
simple_edge_detection(img)
結(jié)果如下:
我們已經(jīng)使用Python創(chuàng)建了邊緣檢測的代碼。
責(zé)任編輯:彭菁
-
邊緣檢測
+關(guān)注
關(guān)注
0文章
92瀏覽量
18248 -
程序
+關(guān)注
關(guān)注
117文章
3795瀏覽量
81406 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69043
原文標(biāo)題:基于OpenCV的簡單邊緣檢測模型
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于FPGA的實(shí)時(shí)邊緣檢測系統(tǒng)設(shè)計(jì),Sobel圖像邊緣檢測,F(xiàn)PGA圖像處理
基于Canny邊緣檢測算子的圖像檢索算法
基于FPGA的嵌入式圖像邊緣檢測系統(tǒng)設(shè)計(jì)
請(qǐng)問,如何進(jìn)行DSP編程(C語言)實(shí)現(xiàn)圖像濾波處理,及邊緣檢測??
如何利用FPGA實(shí)現(xiàn)Laplacian圖像邊緣檢測器的研究?
Labview圖像處理——邊緣檢測
基于改進(jìn)的Laplacian算子圖像邊緣檢測
![基于改進(jìn)的Laplacian算子<b class='flag-5'>圖像</b><b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>](https://file.elecfans.com/web2/M00/48/EF/pYYBAGKhtC6AfpnuAAALTxcvtZo712.jpg)
超空泡圖像的自適應(yīng)多尺度小波邊緣檢測
實(shí)時(shí)圖像邊緣檢測的設(shè)計(jì)及FPGA實(shí)現(xiàn)
![實(shí)時(shí)<b class='flag-5'>圖像</b><b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>的設(shè)計(jì)及FPGA實(shí)現(xiàn)](https://file.elecfans.com/web2/M00/49/3F/pYYBAGKhtEGAYH_8AAAMQsBj5cI354.jpg)
多尺度積圖像邊緣檢測算法
圖像處理算法——邊緣檢測
![<b class='flag-5'>圖像</b>處理算法——<b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>](https://file1.elecfans.com/web2/M00/B1/FF/wKgaomVoTrSAE7a3AAAKg7JrnMs702.jpg)
評(píng)論