2013-10-20 29 views
5

こんにちは、私はOpenCVを初めて使用しています。固定位置に置かれたカメラを使用して人体追跡を実装しようとしています。私はちょっとした研究をしましたが、ヒストグラム・オブ・オリエンテッド・グラデーション(Histogram of Oriented Gradients)メソッドを見に行きましたが、トラッキングではなく検出であることを理解しています。したがって、私はOpenCVで人間の検出と追跡を実装する最も単純な方法は何か疑問に思っていましたか?OpenCV人体追跡

P/S:私はこれを見つけましたvideoと私は達成したいと正確に何です。

+0

は、これらのSOの記事を見てみましょう。 (答えの左側のチェックマークをクリックしてください) – samkhan13

答えて

4

また、人体検出用にHAARカスケードを使用することもできます。 CascadeClassifier::CascadeClassifier()を使用してカスケードをロードし、次にCascadeClassifier::detectMultiScale()を使用して、オブジェクト(ボディ)が検出された特定のイメージ内の領域を取得します。速度を上げて検出の精度を上げるために、detectMultiScale()に与えられたパラメータを調整してください。

あなたは体の検出のために1つを含むカスケードhereの束を見つけることができます。あなたは十分良かった答えを受け入れることができ

+0

詳細な提案をありがとうが、それほど厄介でない場合、私は1つのフォローアップの質問があります。リアルタイムビデオフィードでトラッキングしているすべての人物(上記のビデオに示されている)に固有の識別子を付けたいので、あなたが提案した方法は、迅速な再検出によってトラッキングを「シミュレート」することを提案していますか?あなたの方法を使って可能ですか?再度、感謝します。 – user2900552

+0

@ user2900552 HAARまたはLBPカスケードを使用すると、目的のオブジェクトに似ている各カメラフレーム内の領域のみを検出することができます。そう、はい、あなたは各フレームで "再検出"して追跡することができます。所望のオブジェクトのインスタンスに一意のIDを割り当てることは、主成分分析または線形判別分析または「特徴検出および特徴照合」の使用を必要とする。 「実用的なコンピュータビジョンプロジェクトでマスターするopencv」という本を探してください。それはあなたが必要とするもののためのC + +のレシピを持っています。 – samkhan13

+0

種類の返信をありがとう。私はあなたの提案を間違いなく試みますが、今はOpenCVを最初に立ち上げる必要があります。再度、感謝します。 – user2900552

1

「人物」モデルでHOG検出器または潜在型SVM検出器を使用して、人物の境界ボックスを取得し、その人物を追跡することができます。

人の重心を追跡するには、次の手順を実行します。 新しい重心位置を測定します。速度を測定する。現在のフレームの位置と速度を使用して、次のフレーム重心の位置を予測します。次に、重心の新しい測定値が予測値に近いかどうかを確認します。それが前のフレームと同じ人であれば、そうでなければ、それはフレームに入った新しい人物です。

おそらく、重心の代わりに境界ボックスを追跡する必要があります。あなたはフレームレートが十分に高いです、おそらくあなたは境界ボックスをプロットし、追跡について忘れることができます。

関連する問題