7

問題: 動画の 2 つのフレームを整列させようとしています。

現在、関数「cvCalcOpticalFlowLK」を使用しようとしていますが、結果は x と y の速度ベクトルを「CvArr」の形式で出力します。

結果は得られましたが、これらのベクトル配列の使用方法がわかりません。

私の質問はこれです...各ピクセルの速度をどのように知ることができますか? その特定のポイントの各ピクセル値の値だけですか?

注: cvCalcOpticalFlowPyrLK() などの他のオプティカル フロー関数を使用した方がはるかに簡単ですが、高密度のオプティカル フローが必要です。

4

3 に答える 3

4

どうやら私の当初の仮定は真実でした。オプティカルフロー関数からの「velx」および「vely」出力は、各ピクセル値の実際の速度です。それらを最もよく抽出するために、生データからピクセルにアクセスし、値を取得しました。これを行うには2つの方法があります。

cvGet2D()-この方法は低速ですが、1ピクセルにアクセスするだけでよい場合は問題ありません。

また

(uchar *)(image-> imageData + height * image-> widthStep + width);

(画像はIplImageであり、幅と高さは画像の対応する幅と高さです)

于 2009-12-14T18:28:55.870 に答える
0

各ピクセルのモーション ベクトルが必要な場合は、「高密度オプティカル フロー」と呼ばれるものを計算する必要があります。openCV 2.1 から、まさにそれを行う関数があります: calcOpticalFlowFarneback。

以下のリンクを参照してください

于 2012-07-23T18:49:55.567 に答える