1.形態(tài)學(xué)腐蝕——erode函數(shù)
C++:
void dilate(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor=Point(-1,-1),
int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
參數(shù)詳解:
第一個(gè)參數(shù),InputArray類型的src,輸入圖像,即源圖像,填Mat類的對(duì)象即可。圖像通道的數(shù)量可以是任意的,但圖像深度應(yīng)為CV_8U,CV_16U,CV_16S,CV_32F或 CV_64F其中之一。
第二個(gè)參數(shù),OutputArray類型的dst,即目標(biāo)圖像,需要和源圖片有一樣的尺寸和類型。
第三個(gè)參數(shù),InputArray類型的kernel,膨脹操作的核。若為NULL時(shí),表示的是使用參考點(diǎn)位于中心3x3的核。
我們一般使用函數(shù) getStructuringElement配合這個(gè)參數(shù)的使用。getStructuringElement函數(shù)會(huì)返回指定形狀和尺寸的結(jié)構(gòu)元素(內(nèi)核矩陣)。
其中,getStructuringElement函數(shù)的第一個(gè)參數(shù)表示內(nèi)核的形狀,我們可以選擇如下三種形狀之一:
矩形: MORPH_RECT
交叉形: MORPH_CROSS
橢圓形: MORPH_ELLIPSE
//形態(tài)學(xué)操作
Mat kernel = getStructuringElement(MORPH_RECT, Size(2, 2));
//膨脹 亮度部分 黑色的范圍會(huì)變?。ò椎缀谏矬w) 變細(xì)
dilate(gray_src, binary, kernel, Point(-1, -1), 4);
imshow("dilate", binary);

2.形態(tài)學(xué)腐蝕——erode函數(shù)
C++: void erode(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor=Point(-1,-1),
int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
參數(shù)詳解:
第一個(gè)參數(shù),InputArray類型的src,輸入圖像,即源圖像,填Mat類的對(duì)象即可。圖像通道的數(shù)量可以是任意的,但圖像深度應(yīng)為CV_8U,CV_16U,CV_16S,CV_32F或 CV_64F其中之一。
第二個(gè)參數(shù),OutputArray類型的dst,即目標(biāo)圖像,需要和源圖片有一樣的尺寸和類型。
第三個(gè)參數(shù),InputArray類型的kernel,腐蝕操作的內(nèi)核。若為NULL時(shí),表示的是使用參考點(diǎn)位于中心3x3的核。我們一般使用函數(shù) getStructuringElement配合這個(gè)參數(shù)的使用。getStructuringElement函數(shù)會(huì)返回指定形狀和尺寸的結(jié)構(gòu)元素(內(nèi)核矩陣)。(具體看上文中淺出部分dilate函數(shù)的第三個(gè)參數(shù)講解部分)
第四個(gè)參數(shù),Point類型的anchor,錨的位置,其有默認(rèn)值(-1,-1),表示錨位于單位(element)的中心,我們一般不用管它。
第五個(gè)參數(shù),int類型的iterations,迭代使用erode()函數(shù)的次數(shù),默認(rèn)值為1。
第六個(gè)參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式。注意它有默認(rèn)值BORDER_DEFAULT。
第七個(gè)參數(shù),const Scalar&類型的borderValue,當(dāng)邊界為常數(shù)時(shí)的邊界值,有默認(rèn)值morphologyDefaultBorderValue(),一般我們不用去管他。需要用到它時(shí),可以看官方文檔中的createMorphologyFilter()函數(shù)得到更詳細(xì)的解釋。
同樣的,使用erode函數(shù),一般我們只需要填前面的三個(gè)參數(shù),后面的四個(gè)參數(shù)都有默認(rèn)值。而且往往結(jié)合getStructuringElement一起使用。
Mat kernel = getStructuringElement(MORPH_RECT, Size(2, 2));
erode(gray_src, erodeMat,kernel, Point(-1, -1), 4);
