OpenCV python 膨脹和腐蝕

2021-09-24 05:49:38 字數 2000 閱讀 1500

1,概念及原理:

膨脹(dilating) (或)

(1)將影象 a 與任意形狀的核心 (b),通常為正方形或圓形,進行卷積。

(2)核心 b 有乙個可定義的 錨點, 通常定義為核心中心點。

(3)進行膨脹操作時,將核心 b 劃過影象a,將核心 b 覆蓋區域的最大相素值提取,並代替錨點位置的相素。顯然,這一最大化操作將會導致影象中的亮區開始」擴充套件」 (因此有了術語膨脹 dilation )。

以3*3的核心為例:

腐蝕(eroding) (與)

(1)腐蝕在形態學操作家族裡是膨脹操作的孿生姐妹。它提取的是核心覆蓋下的相素最小值。

(2)進行腐蝕操作時,將核心 b 劃過影象,將核心 b 覆蓋區域的最小相素值提取,並代替錨點位置的相素。

源**:

import cv2 as cv

import numpy as np

def erode_demo(image):

# print(image.shape)

gray = cv.cvtcolor(image, cv.color_bgr2gray)

ret, binary = cv.threshold(gray, 0, 255, cv.thresh_binary | cv.thresh_otsu)

#cv.imshow("binary", binary)

kernel = cv.getstructuringelement(cv.morph_rect, (15, 15))#定義結構元素的形狀和大小

dst = cv.erode(binary, kernel)#腐蝕操作

cv.imshow("erode_demo", dst)

def dilate_demo(image):

#print(image.shape)

gray = cv.cvtcolor(image, cv.color_bgr2gray)

ret, binary = cv.threshold(gray, 0, 255, cv.thresh_binary | cv.thresh_otsu)

#cv.imshow("binary", binary)

kernel = cv.getstructuringelement(cv.morph_rect, (5, 5))#定義結構元素的形狀和大小

dst = cv.dilate(binary, kernel)#膨脹操作

cv.imshow("dilate_demo", dst)

src = cv.imread("f:/images/test01.png")

cv.namedwindow("input image", cv.window_autosize)

cv.imshow("input image", src)

erode_demo(src)

dilate_demo(src)

cv.waitkey(0)

cv.destroyallwindows()

執行結果:

opencv python中的腐蝕與膨脹函式

1 影象的腐蝕 就像土壤侵蝕一樣,這個操作會把前景物體的邊界腐蝕掉 但是前景仍然是白色 這是怎麼做到的呢?卷積核沿著影象滑動,如果與卷積核對應的原影象的所有畫素值都是1,那麼中心元素就保持原來的畫素值,否則就變為零。這回產生什麼影響呢?根據卷積核的大小靠近前景的所有畫素都會被腐蝕掉 變為 0 所以前...

腐蝕和膨脹

matlab中函式strel在操作結構元素應用,用於膨脹腐蝕及開閉運算等操作的結構元素物件 構造結構元素 具體用法 se strel shape,parameters 建立由指定形狀shape對應的結構元素。其中shape的種類有 arbitrary pair diamond periodiclin...

膨脹和腐蝕

我在做手勢識別模組。以下是程式 clear i1 imread c users administrator desktop 手勢 8.jpg level graythresh i1 自動算出合適的閾值 i2 im2bw i1,level 灰度影象轉換為二值影象 se ones 50,10 形態學結構...