我正在使用 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 很陌生..请指导我或告诉我在哪里可以找到解决方案...很多提前谢谢..