これは私のトラッキングアルゴリズムのベースとして機能するために使用します。オプティカルフローを使用したOpenCVトラッキング
//1. detect the features
cv::goodFeaturesToTrack(gray_prev, // the image
features, // the output detected features
max_count, // the maximum number of features
qlevel, // quality level
minDist); // min distance between two features
// 2. track features
cv::calcOpticalFlowPyrLK(
gray_prev, gray, // 2 consecutive images
points_prev, // input point positions in first im
points_cur, // output point positions in the 2nd
status, // tracking success
err); // tracking error
cv::calcOpticalFlowPyrLK
入力として、前の画像からの点のベクトルをとり、次の画像上の適切な点を返します。前の画像にランダムなピクセル(x、y)があると仮定し、OpenCVオプティカルフロー関数を使用して次の画像上でこのピクセルの位置を計算するにはどうすればよいですか?
私はあなたが一度だけ機能の検出を行うことがわかります。私はこのコードをテストしました。私は、最初の画像で検出された特徴だけが追跡できることを発見しました。これらのすべての機能がイメージを超えている場合、追跡する機能はありません。 3D構築にオプティカルフローを使用する必要があります。その後、古い画像を継続的に追跡し、その間に新しい画像機能を追加するにはどうすればよいですか?ありがとう。 – Shiyu
はい、 'goodFeaturesToTrack'でフィーチャを検出するだけです。オプティカルフローメソッドは単純にそれらを追跡します。各フレームで特定の数のフィーチャを維持するには、現在のフレームに対してどのくらいの数のフィーチャが正常に追跡されたかを検出し、次のフレームまで追跡するフィーチャをさらに検出する必要があります。代わりに、[このページ](http://opencv.itseez.com/modules/features2d/doc/features2d.html)の関数を使用して、すべてのフレームのフィーチャを検出し、ディスクリプタを計算し、それらのディスクリプタと一致させることもできます。 – Chris
詳細が必要な場合は、新しい質問をすることをお勧めします。 – Chris