簡體   English   中英

使用opencv的光流

[英]Optical flow using opencv

我正在使用OpenCV的Pyramid Lukas Kanade功能來估算光流。 我調用cvGoodFeaturesToTrack然后調用cvCalcOpticalFlowPyrLK 這是我的代碼:

while(1)
{
...

cvGoodFeaturesToTrack(frameAth,eig_image,tmp_image,cornersA,&corner_count,0.01,5,NULL,3,0.4);

std::cout<<"CORNER COUNT AFTER GOOD FEATURES2TRACK CALL = "<<corner_count<<std::endl;

cvCalcOpticalFlowPyrLK(frameAth,frameBth,pyrA,pyrB,cornersA,cornersB,corner_count,cvSize(win_size,win_size),5,features_found,features_errors,cvTermCriteria( CV_TERMCRIT_ITER| CV_TERMCRIT_EPS,20,0.3 ),CV_LKFLOW_PYR_A_READY|CV_LKFLOW_PYR_B_READY);

cvCopy(frameBth,frameAth,0);
...
}

frameAth是前一個灰色框架, frameBth是網絡攝像頭的當前灰色框架。 但是當我在每幀中輸出要跟蹤的好特征的數量時,該數量在總和時間之后減少並且持續減少。 但如果我終止程序並再次執行代碼(不干擾網絡攝像頭的視野),則會顯示更多數量的點作為跟蹤的良好特征...如何對於相同的視野和相同的視野場景中的函數給出了點數的差異...並且差異很大......例如,作為執行4分鍾后要跟蹤的好特征的點數是20或50 ...但是當相同的程序終止時再次執行該數字是500至700初始但又慢慢減少..我在過去4個月使用opencv所以我是新的openCV ..請指導我或告訴我在哪里可以找到解決方案...很多提前..

您必須調用cvGoodFeaturesToTrack一次(在開始之前,循環之前)以檢測要跟蹤的好功能,並使用cvCalcOpticalFlowPyrLK跟蹤這些功能。 看看默認的opencv示例: OpenCV/samples/cpp/lkdemo.cpp

您正在調用cvGoodFeatureToTrack並通過引用傳遞corner_count 如果找到較少的特征,其值會降低。 你要的值重置corner_count致電前,其初始值cvGoodFeaturesToTrack在while循環的每個迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM