交流:
QQ:345440305
Email:zhongstellar@gmail.com
cvCreateStructuringElementEx建立結構元素 IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int* values=NULL );cols:結構元素的列數目 rows:結構元素的行數目 anchor_x:錨點的相對水平位移量 anchor_y:錨點的相對垂直位移量 shape:結構元素的形狀,可以是下列值:CV_SHAPE_RECT, 長方形元素;CV_SHAPE_CROSS, 交錯元素 a cross-shaped element;CV_SHAPE_ELLIPSE, 橢圓元素;CV_SHAPE_CUSTOM, 使用者自訂元素。這種情況下參數 values 定義了 mask,即象素的那個鄰域必須考慮。values:指向結構元素的指標,它是一個平面數組,表示對元素矩陣漸進式掃描。(非零點表示該點屬於結構元)。如果指標為空白,則表示平面數組中的所有元素都是非零的,即結構元是一個長方形(該參數僅僅當shape參數是 CV_SHAPE_CUSTOM 時才予以考慮)。函數 cv CreateStructuringElementEx 分配和填充結構 IplConvKernel, 它可作為形態操作中的結構元素。舉個例子比較好說清楚比如一個圖000000111000000用一個cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)的元素來腐蝕,則結果為000000100000000而用一個cvCreateStructuringElementEx( 3,1,1 0,CV_SHAPE_RECT)的元素來腐蝕,則結果為000000010000000理解:cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)中的3,1表示要腐蝕的對象是一個3列1行的矩陣,如果該矩陣裡元素全為非零,則將其轉化為同樣大小隻包含一個非零元素,而該非零元素的位置是(0,0)。同理cvCreateStructuringElementEx( 3,1,1 0,CV_SHAPE_RECT)中的3,1表示要腐蝕的對象是一個3列1行的矩陣,如果該矩陣裡元素全為非零,則將其轉化為同樣大小隻包含一個非零元素,而該非零元素的位置是(1,0)假如用下面這個去腐蝕映像,中心是在右下角1 0 01 1 01 1 1 那麼應該怎麼表示呢?理論上應該是int mask[9] = {1, 0, 0, 1, 1, 0, 1, 1, 1}; IplConvKernel* strel = cvCreateStructuringElementEx( 3, 3, 0, 2, CV_SHAPE_CUSTOM, mask );其中0,2可按自己要求設定。