檢測出運動目標後提取邊界 兩個函數 cvFindContours和cvBoundingRect

      1   cvFindContours( void*  img,  CvMemStorage*  storage,
                                                       CvSeq**  firstContour, int  cntHeaderSize,

                                                        int  mode, int  method, CvPoint offset )

作用:檢索二值圖像中所有的邊界輪廓,並返回檢測到的輪廓個數。

參數解釋:

img  :8比特單通道的源二值圖像。非零像素作爲1處理,0像素保存不變;

storage :返回輪廓的容器;

first_contour :  輸出參數,用於存儲指向第一個外接輪廓;

header_size : header序列的尺寸.一般情況是 header_size >= sizeof(CvContour);

mode:(默認1)
        CV_RETR_EXTERNAL:只檢索最外面的輪廓;
        CV_RETR_LIST:檢索所有的輪廓,並將其放入list中;
        CV_RETR_CCOMP:檢索所有的輪廓,並將他們組織爲兩層:頂層是各部分的外部邊界,第二層是空洞的邊界;
        CV_RETR_TREE:檢索所有的輪廓,並重構嵌套輪廓的整個層次。

method  :邊緣近似方法
         CV_CHAIN_CODE:以Freeman鏈碼的方式輸出輪廓,所有其他方法輸出多邊形(頂點的序列)。
          CV_CHAIN_APPROX_NONE:將所有的連碼點,轉換成點。
         CV_CHAIN_APPROX_SIMPLE:壓縮水平的、垂直的和斜的部分,也就是,函數只保留他們的終點部分。
         CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS:使用the flavors of Teh-Chin chain近似算法的一種。
         CV_LINK_RUNS:通過連接水平段的1,使用完全不同的邊緣提取算法。使用CV_RETR_LIST檢索模式能使用此方法。

offset  : 偏移量,用於移動所有輪廓點。



2 cvBoundingRect( CvArr* points, int update=0 )

作用:返回二維點集的最外面 (up-right)矩形邊界

參數解釋

points  二維點集,點的序列或向量 (CvMat)
         update   更新標識。
         update=0, contour ~ CvContour*: 不計算矩形邊界,但直接由輪廓頭的 rect 域得到。
         update=1, contour ~ CvContour*: 計算矩形邊界,而且將結果寫入到輪廓頭的 rect 域中 header。
         update=0, contour ~ CvSeq* or CvMat*: 計算並返回邊界矩形。
         update=1, contour ~ CvSeq* or CvMat*: 產生運行錯誤 (runtime error is raised)。


備註:在做運動目標檢測時,到後面進行跟蹤環節,採用cvFindContours( pBkImg, storage, &contour, sizeof(CvContour),mode, CV_CHAIN_APPROX_SIMPLE)和cvBoundingRect(contour, 0),提取運動物體的座標。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章