[英]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.