オプティカル フローの推定には、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を初めて使用します..私を案内するか、解決策を見つけることができる場所を教えてください...たくさん事前に感謝..