開閉操作

開操作:先腐蝕後膨脹  作用:刪除小的干擾塊

閉操作:先膨脹後腐蝕

先看一下開操作的運用:

應用一:去除背景雜線

首先將圖片處理成二值圖像

src = cv.imread("D:/pythonTest/img/16.jpg")
gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
cv.imshow("binary",binary)

我們需要把橫線去除,單獨顯示出字符。這在圖片背景預處理方面非常有用。

 

二、進行開操作

k = cv.getStructuringElement(cv.MORPH_RECT,(3,3))
dst1 = cv.morphologyEx(binary,cv.MORPH_OPEN,k,iterations=1)
#dst2 = cv.morphologyEx(binary, cv.MORPH_CLOSE, k, iterations=1)  #閉操作,暫不起作用
cv.imshow("result",dst1)

得到結果如下:

效果還是可以的。

 

應用二:提取水平線和垂直線

同樣先化成二值圖像:

src = cv.imread("D:/pythonTest/img/18.jpg")
gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
cv.imshow("binary",binary)

這裏選用的圖片是

然後進行用開操作提取水平線:

k = cv.getStructuringElement(cv.MORPH_RECT,(30,1))
dst1 = cv.morphologyEx(binary,cv.MORPH_OPEN,k,iterations=2)
cv.imshow("result",dst1)

可以看到這裏選用的模板形狀是(30,1)的矩形。得到如下結果:

如果將模板形狀改成(1,30),就可以得到垂直線了:

k = cv.getStructuringElement(cv.MORPH_RECT,(1,30))
dst1 = cv.morphologyEx(binary,cv.MORPH_OPEN,k,iterations=2)
cv.imshow("result",dst1)

 

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