閉運(yùn)算是先膨脹、后腐蝕的運(yùn)算,它有助于關(guān)閉前景物體內(nèi)部的小孔,或去除物體上的小黑點(diǎn),還可以將不同的前景圖像進(jìn)行連接。
例如,在圖 8-17 中,通過先膨脹后腐蝕的閉運(yùn)算去除了原始圖像內(nèi)部的小孔(內(nèi)部閉合的閉運(yùn)算),其中:
- 左圖是原始圖像。
- 中間的圖是對原始圖像進(jìn)行膨脹的結(jié)果。
- 右圖是對膨脹后的圖像進(jìn)行腐蝕的結(jié)果,即對原始圖像進(jìn)行閉運(yùn)算的結(jié)果。
從圖 8-17 可以看到,原始圖像在經(jīng)過膨脹、腐蝕后,實現(xiàn)了閉合內(nèi)部小孔的目的。除此以外,閉運(yùn)算還可以實現(xiàn)前景圖像的連接。例如,在圖 8-18 中,利用閉運(yùn)算將原本獨(dú)立的兩部分前景圖像連接在一起,其中:
- 左圖是原始圖像。
- 中間的圖是對原始圖像進(jìn)行膨脹的結(jié)果。
- 右圖是對膨脹后的圖像進(jìn)行腐蝕的結(jié)果,即對原始圖像進(jìn)行閉運(yùn)算的結(jié)果。
通過將函數(shù) cv2.morphologyEx()
中操作類型參數(shù) op 設(shè)置為“cv2.MORPH_CLOSE”,可以實現(xiàn)閉運(yùn)算。其語法結(jié)構(gòu)如下:
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
代碼示例:
使用函數(shù) cv2.morphologyEx()實現(xiàn)閉運(yùn)算。
原圖
代碼如下:文章來源:http://www.zghlxwxcb.cn/news/detail-630668.html
import cv2
import numpy as np
img1=cv2.imread("closing.bmp")
img2=cv2.imread("closing2.bmp")
k=np.ones((10,10),np.uint8)
r1=cv2.morphologyEx(img1,cv2.MORPH_CLOSE,k,iterations=3)
r2=cv2.morphologyEx(img2,cv2.MORPH_CLOSE,k,iterations=3)
cv2.imshow("img1",img1)
cv2.imshow("result1",r1)
cv2.imshow("img2",img2)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()
在本例中,分別針對兩幅不同的圖像做了閉運(yùn)算。運(yùn)行程序,結(jié)果如下圖所示,其中:文章來源地址http://www.zghlxwxcb.cn/news/detail-630668.html
- 圖(a)是原始圖像 img1。
- 圖(b)是原始圖像 img1 經(jīng)過閉運(yùn)算得到的圖像 r1。
- 圖?是原始圖像 img2。
- 圖(d)是原始圖像 img2 經(jīng)過閉運(yùn)算得到的圖像 r2。
到了這里,關(guān)于opencv基礎(chǔ)-38 形態(tài)學(xué)操作-閉運(yùn)算(先膨脹,后腐蝕)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!