比較的小さい (288 x 360) トラフィック ビデオでオプティカル フローを使用していますが、問題があります。フレーム内のいくつかの場所のオプティカル フロー ベクトルを取得できません。この画像は、
goodFeaturesToTrack()
次のように機能します。
vector<Point2f> features1;
vector<Point2f> features2;
int number_of_features = 2000;
goodFeaturesToTrack(frame1, features1 ,number_of_features,0.01,0.01);
後ろにたくさんの点が検出されているのがわかりますが、使用すると
calcOpticalFlowPyrLK()
次のようなオプティカル フロー ベクトルを取得します。
TermCriteria optical_flow_termination_criteria= TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 10, .001 );
calcOpticalFlowPyrLK(
frame1, frame2, features1, features2,
optical_flow_found_feature,optical_flow_feature_error,
Size(21,21),5,optical_flow_termination_criteria
);
画像のブローのように、正面のポイントのみを返します。
しかし、すべてのビデオのベクトルが必要です。では、どうすれば後ろからもベクトルを取得できますか?
編集:
私が間違っていたのは、小さなベクトルをフィルタリングしていたことです。