1. 程式人生 > >OpenCV之腐蝕(Erosion)和膨脹(Dilation)

OpenCV之腐蝕(Erosion)和膨脹(Dilation)

腐蝕Erosion是通過API函式erode來實現的(膨脹和腐蝕使用上一樣使用API函式Dilate

     erode(const Mat &src, Mat &dst, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)

     src:輸入影象,可以多通道,深度可為CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。

     dst:輸出影象,尺寸,通道與輸入影象相同。

     kernel:結構元素,如果kernel=Mat()則預設為3*3的矩陣,kernel越大則侵蝕效果越明顯。

     anchor:錨點位置,預設為結構中央位置。

    iterations:執行次數,預設執行一次,執行次數越多侵蝕效果越明顯。

使用erode一般還會用到另一個API函式getStructuringElement(獲得結構元素kernel)

Mat getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1));

  shape:獲得結構元素的形狀  使用列舉enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };

                0---矩形:MORPH_RECT

                1---十字交叉型:MORPH_CROSS

                 2---橢圓:MORPH_ELLIPSE

 esize:核心的尺寸(一般為奇數3*3 5*5 7*7.....)

 anchor:錨點位

 返回一個Mat的結構元素

如下列子

執行結果如下: