CalcOpticalFlowPyrLK計算一個稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法 void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, const CvPoint2D32f* prev_features, CvPoint2D32f* curr_features, int count, CvSize win_size, int level, char* status, float* track_error, CvTermCriteria criteria, int flags );
函數(shù) cvCalcOpticalFlowPyrLK 實現(xiàn)了金字塔中 Lucas-Kanade 光流計算的稀疏迭代版本 ([Bouguet00])。 它根據(jù)給出的前一幀特征點坐標(biāo)計算當(dāng)前視頻幀上的特征點坐標(biāo),。 函數(shù)尋找具有子象素精度的坐標(biāo)值,。 兩個參數(shù) prev_pyr 和 curr_pyr 都遵循下列規(guī)則: 如果圖像指針為 0, 函數(shù)在內(nèi)部為其分配緩存空間,,計算金字塔,然后再處理過后釋放緩存,。 否則,,函數(shù)計算金字塔且存儲它到緩存中,除非設(shè)置標(biāo)識 CV_LKFLOW_PYR_A[B]_READY ,。 圖像應(yīng)該足夠大以便能夠容納 Gaussian 金字塔數(shù)據(jù),。調(diào)用函數(shù)以后,金字塔被計算而且相應(yīng)圖像的標(biāo)識可以被設(shè)置,,為下一次調(diào)用準(zhǔn)備就緒 (比如:對除了第一個圖像的所有圖像序列,,標(biāo)識 CV_LKFLOW_PYR_A_READY 被設(shè)置).
上面的對opencv中對這個函數(shù)的具體介紹: 我把自己使用中獲得的收獲寫下 1 這里的pre 和 cur 分別代表我們需要跟蹤圖像的前一幀和當(dāng)前幀,對物體的跟蹤,,我們在第一幀的時候一般是定位特征點,,同時把這幀保存為 pre ,那么處理第二幀的時候這兩個參數(shù)都會有了??梢赃M(jìn)行跟蹤了,。 2 關(guān)于 flag, 根據(jù)我們的金字搭是否建立了,,設(shè)置不同的值,,一般在第一次使用0,在一幀處理完了保留當(dāng)前金字塔為前一幀金字塔,,下次處理時候直接可以使用,。 |
|