私はopenCVを初めて使用します。OpenCVでリアルタイムに手までの距離を計算する方法はありますか?私の基本的な考え方は、手を追跡してジェスチャーを識別することです。肌の色の認識を使用してそれを行うのは本当に難しいです。だから私は、手までの距離を計算し、手の領域を分離して、ジェスチャ認識を行います。これで私を助けてください...
1 に答える
これがあなたが使うことができるテクニックのいくつかです...
背景が静止していて、手だけが動いている場合は、フレーム微分を使用して、動いている手をセグメント化できます... I(x、y)diff = absoulute [I(x、y、n)-I(x、y、 n-1)] ....ここで、I(x、y、n)は現在のフレームのポイントx、yの強度です...そしてI(x、y、n-1)は前のフレームと同じですフレーム..次に、しきい値I(x、y)diffを使用して、移動する唯一のハンドを取得します。
OpenCVのgoodfeturestotrack関数を使用して、追跡に適したポイントのセットを識別し、calcOpticalFlow関数を使用して、各フレーム内のそのポイントのセットの位置を見つけます...このメソッドは、背景に関係ありません... goodfeaturestotrackは、手と背景のポイント....しかし、手は背景と比較してかなり動いているので、各フレームで、追跡に適した最初に識別されたポイントのセットの異なる位置を取得します...手の上と近くのポイントは、フレーム内の他のポイントと比較して最大の変位を持ちます...したがって、2つの連続するフレーム間のポイントの変位の大きさに基づいて、手をセグメント化できます...このプロセスオプティカルフロー計算と呼ばれます。
手をセグメント化すると、セグメント化された領域にポリゴンフィットを実行できます。このようにして、ジェスチャとポリゴンの形状を関連付けることができます...