opencv2函數學習之erode、dilate:圖像腐蝕和膨脹


圖像腐蝕和圖像膨脹是圖像中兩種最基本形態學操作。

void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
void dilate( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );

可見,腐蝕和膨脹的參數完全一樣。

參數:

src:原圖像。

dst:目標圖像。

element:腐蝕操作的內核。 如果不指定,默認為一個簡單的 3x3 矩陣。否則,我們就要明確指定它的形狀,可以使用函數getStructuringElement().

anchor:默認為Point(-1,-1),內核中心點。省略時為默認值。

iterations:腐蝕次數。省略時為默認值1。

borderType:推斷邊緣類型,具體參見borderInterpolate函數。默認為BORDER_DEFAULT,省略時為默認值。

borderValue:邊緣值,具體可參見createMorphoogyFilter函數。可省略。

 

通常情況下,我們可以使用函數getStructuringElement()來制作操作內核。

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

參數:

shape:內核形狀,主要有MORPH_RECT,MORPH_CROSSMORPH_ELLIPSE,分別為矩形、橢圓形和交叉形,對應的值分別為0,1,2

  

enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };

 

 

esize:內核大小。

anchor:內核錨點,默認為內核中心點。

例:

Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );

  /// 腐蝕操作
  erode( src, dst, element );
Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );

  /// 膨脹操作
  dilate( src, dst, element );

 

——


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM