類型 | 說(shuō)明 | 意義 | 操作 |
---|---|---|---|
cv2.MORPH_ERODE | 腐蝕 | 腐蝕 | erode() |
cv2.MORPH_DILATE | 膨脹 | 膨脹 | dilate() |
cv2.MORPH_OPEN | 開(kāi)運(yùn)算 | 先腐蝕后膨脹 | dilate(erode()) |
cv2.MORPH_CLOSE | 閉運(yùn)算 | 先膨脹后腐蝕 | erode(dilate()) |
cv2.MORPH_GRADIENT | 形態(tài)學(xué)梯度運(yùn)算 | 膨脹圖減腐蝕圖 | dilate()-erode() |
cv2.MORPH_TOPHAT | 頂帽運(yùn)算 | 原始圖像減開(kāi)運(yùn)算所得圖像 | src-open() |
cv2.MORPH_BLACKHAT | 黑帽運(yùn)算 | 閉運(yùn)算所得圖像減原始圖像 | close()-src |
cv2.MORPH_HITMISS | 擊中擊不中 | 前景背景腐蝕運(yùn)算的交集。僅僅支持CV8UC1二進(jìn)制圖像 | intersection(erode(src),erode(src1)) |
如上表所示,開(kāi)運(yùn)算是將原圖像腐蝕,再對(duì)其進(jìn)行膨脹操作。主要用于去噪,計(jì)數(shù)等。去噪我們已經(jīng)通過(guò)上面的腐蝕操作就可以完成,下面我們來(lái)實(shí)現(xiàn)有趣的計(jì)數(shù)操作。
import cv2 import numpy as np img = cv2.imread("open.jpg",cv2.IMREAD_UNCHANGED) kernel = np.ones((9,9), np.float32) result = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=5) cv2.imshow("img", img) cv2.imshow("result", result) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,我們能將不同區(qū)域劃分開(kāi)來(lái),效果如下:
閉運(yùn)算是先膨脹后腐蝕的運(yùn)算,它有助于關(guān)閉前景物體內(nèi)部的小孔,或去除物體上的小黑點(diǎn),還可以將不同的前景圖像進(jìn)行連接。下面,我們就將上圖進(jìn)行連接。
import cv2 import numpy as np img = cv2.imread("close.jpg", cv2.IMREAD_UNCHANGED) kernel = np.ones((10, 10), np.float32) result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=7) cv2.imshow("img", img) cv2.imshow("result", result) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,兩個(gè)方塊就連接為一個(gè)整體了,效果如下所示:
形態(tài)學(xué)梯度運(yùn)算是用圖像膨脹后的圖像減去腐蝕圖像的運(yùn)算,該操作可以獲取原始圖像中的前景圖像的邊緣。我們還是用上篇膨脹的圖來(lái)測(cè)試,代碼如下:
import cv2 import numpy as np img = cv2.imread("8.jpg", cv2.IMREAD_UNCHANGED) kernel = np.ones((5, 5), np.float32) result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel,iterations=2) cv2.imshow("img", img) cv2.imshow("result", result) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,我們的圖像就中空了,效果如下:
頂帽運(yùn)算是用原始圖像減去其開(kāi)運(yùn)算圖像的操作。它能夠獲取圖像的噪聲信息,或者得到比原圖像的邊緣更亮的邊緣信息。也就是獲取上圖中的白色線條,具體代碼如下:
import cv2 import numpy as np img = cv2.imread("8.jpg", cv2.IMREAD_UNCHANGED) kernel = np.ones((5, 5), np.float32) result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel,iterations=2) cv2.imshow("img", img) cv2.imshow("result", result) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,效果如下:
黑帽運(yùn)算是用閉運(yùn)算圖像減去原始圖像的操作。它能夠獲取內(nèi)部的小孔,或前景色中的小黑點(diǎn),亦或者得到比原始圖像的邊緣更暗的邊緣部分。這里,我們用前面的人物圖像,代碼如下:
import cv2 import numpy as np img = cv2.imread("4.jpg", cv2.IMREAD_UNCHANGED) kernel = np.ones((5, 5), np.float32) result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel,iterations=2) cv2.imshow("img", img) cv2.imshow("result", result) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,效果如下:
前面我們介紹過(guò),結(jié)構(gòu)元可以自定義,也可以通過(guò)cv2.getStructuringElement()函數(shù)生成。這里,我們來(lái)看看其完整的定義:
def getStructuringElement(shape, ksize, anchor=None):
shape:形狀類型,取值如下表:
類型 | 意義 |
---|---|
cv2.MORPH_RECT | 矩形結(jié)構(gòu)元,所有元素值為1 |
cv2.MORPH_CROSS | 十字形結(jié)構(gòu)元,對(duì)角線元素值為1 |
cv2.MORPH_ELLIPSE | 橢圓形結(jié)構(gòu)元素 |
ksize:結(jié)構(gòu)元的大小
anchor:結(jié)構(gòu)元的錨點(diǎn)位置,默認(rèn)值(-1,1),是形狀的中心。只有十字星型的形狀與錨點(diǎn)位置緊密聯(lián)系。在其他情況下,錨點(diǎn)位置僅用于形態(tài)學(xué)運(yùn)算結(jié)果的調(diào)整。
下面,我們將這三種形狀類型都實(shí)現(xiàn)一遍,具體代碼如下:
import cv2 img = cv2.imread("open.jpg", cv2.IMREAD_UNCHANGED) kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(50,50)) kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS,(50,50)) kernel3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(50,50)) result1 = cv2.dilate(img,kernel1) result2 = cv2.dilate(img,kernel2) result3 = cv2.dilate(img,kernel3) cv2.imshow("img", img) cv2.imshow("result1", result1) cv2.imshow("result2", result2) cv2.imshow("result3", result3) cv2.waitKey() cv2.destroyAllWindows()
運(yùn)行之后,效果如下所示:
到此這篇關(guān)于OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)的文章就介紹到這了,更多相關(guān)OpenCV 通用形態(tài)學(xué)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:聊城 迪慶 楊凌 牡丹江 六盤(pán)水 揚(yáng)州 南寧 撫州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)》,本文關(guān)鍵詞 OpenCV-Python,實(shí)現(xiàn),通用,形態(tài)學(xué),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。