91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么使用OpenCV實現腐蝕與膨脹

發布時間:2021-06-11 13:56:11 來源:億速云 閱讀:464 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Python中怎么使用OpenCV實現腐蝕與膨脹,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

什么是形態學

要了解腐蝕之前,我們需要了解一個概念:形態學。

形態學,又名數學形態學(Mathematical Morphology),是圖像處理過程中一個非常重要的研究方向。形態學主要從圖像內提取分量信息,該分量信息通常對于表達和描繪圖像的形狀具有重要的意義,通常是圖像理解時所使用的最本質的形狀特征。

例如,在識別手寫數字時,能夠通過形態學運算得到其骨架信息,在具體的識別時,僅針對其骨架進行運算即可。形態學處理在視覺檢測,文字識別,醫學圖像處理,圖像壓縮編碼等領域都有非常重要的應用。

形態學操作主要包含:腐蝕,膨脹,開運算,閉運算,形態學梯度運算,頂帽運算,黑帽運算等操作。腐蝕操作與膨脹操作是形態學的運算基礎,將腐蝕與膨脹結合,就可以實現開運算,閉運算,形態學梯度等不同形式的運算。

所以本篇博文將重點講解腐蝕與膨脹。

腐蝕

腐蝕是最基本的形態學操作之一,它能夠將圖像的邊界點消除,使圖像沿著邊界向內收縮,也可以將小于指定結構體元素的部分去除。腐蝕主要用來“收縮”或者“細化”二值圖像中的前景,借此實現去噪聲,元素分割等功能。

在腐蝕的過程中,通常使用一個結構元來逐個像素地掃描要被腐蝕的圖像,并根據結構元和被腐蝕的圖像的關系來確定腐蝕結果。

首先,我們來看一張腐蝕處理圖:

Python中怎么使用OpenCV實現腐蝕與膨脹

(1)表示要被腐蝕的圖像

(2)結構元

(3)橙色數字是結構元在遍歷圖像時,結構元完全位于前景對象內部時的3個全部可能的位置;此時,結構元分別位于img[2,1],img[2,2],img[2,3]處。

(4)腐蝕結果result,即在結構元完全位于前景圖像中時,將其中心點所對應的result中的像素點的值置為1;當結構元不完全位于前景圖像中時,將其中心點對應的result中的像素點置為0。(按位與)

在OpenCV中,使用函數cv2.erode()實現腐蝕操作,其完整定義如下:

def erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):

src:原始圖像

kernel:結構元,可以自定義,也可以通過函數cv2.getStructuringElement()生成

iterations:腐蝕操作迭代的次數,默認為1,即只進行一次操作

至于其他參數以及取值,前面博文都有介紹,這里不在贅述。

下面,我們使用該函數來測試一下腐蝕的操作:

import cv2
import numpy as np

img = cv2.imread("8.jpg",cv2.IMREAD_UNCHANGED)
kernel = np.ones((9,9), np.float32)
result = cv2.erode(img,kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們得到的效果對比圖如下:

Python中怎么使用OpenCV實現腐蝕與膨脹

可以看到,腐蝕操作將原始圖像內的毛刺給腐蝕掉了,如果想腐蝕的更嚴重,可以設置iterations參數的值。

膨脹

膨脹與腐蝕正好相反,膨脹能對圖像的邊界進行擴張。膨脹操作將與當前的對象(前景)接觸到的背景點合并到當前對象內,從而實現將圖像邊界點向外擴張。如果圖像內的兩個對象距離較近,可能在膨脹后連接到一起。

膨脹操作對填補圖像分割后圖像內所存在的空白相當有幫助。同樣的,膨脹也需要一個結構元進行操作。下面,我們還是用矩陣來講解膨脹的原理。

Python中怎么使用OpenCV實現腐蝕與膨脹

(1)待膨脹的原圖

(2)結構元

(3)橙色部分是結構元遍歷原圖時,結構元中心像素點位于[1,1],img[3,3]時,與前景色存在重合像素點的兩種情況,實際上共有9個這樣的與前景對象重合的可能位置。結構元中心分別位于img[1,1],img[1,2],img[1,3],img[2,1],img[2,2],img[2,3],img[3,1],img[3,2],img[3,3]。

(4)膨脹后的結果圖像result,在結構元內,當任意一個像素點與前景對象重合時,其中心點所對應的膨脹結果圖像內的像素點的值為1;當結構元與前景對象完全無重合時,其中心點對應的膨脹結果圖像內像素點的值為0。(按位或)

在OpenCV中,它給我們提供cv2.dilate()實現對圖像的膨脹操作。其完整定義如下:

def dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):

src:原始圖像

kernel:結構元

其他參數與前文一致,不在贅述。下面,我們使用該函數測試膨脹的效果,具體代碼如下所示:

import cv2
import numpy as np

img = cv2.imread("8.jpg",cv2.IMREAD_UNCHANGED)
kernel = np.ones((9,9), np.float32)
result = cv2.dilate(img,kernel)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,效果如下所示:

Python中怎么使用OpenCV實現腐蝕與膨脹

看完上述內容,你們對Python中怎么使用OpenCV實現腐蝕與膨脹有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭市| 庆元县| 彝良县| 津市市| 苏州市| 永昌县| 运城市| 当阳市| 陈巴尔虎旗| SHOW| 彭阳县| 依兰县| 安宁市| 孟村| 思南县| 个旧市| 东平县| 博野县| 玛多县| 灌云县| 台江县| 长阳| 平阳县| 阜城县| 靖江市| 利川市| 图木舒克市| 乌鲁木齐县| 栾川县| 绥江县| 临海市| 九江县| 土默特左旗| 宜都市| 尖扎县| 台东市| 泸定县| 中方县| 磴口县| 英吉沙县| 沙坪坝区|