OpenCV之腐蝕(Erosion)和膨脹(Dilation)
阿新 • • 發佈:2018-12-17
腐蝕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的結構元素
如下列子
執行結果如下: