4

私はOpenCVライブラリ関数を使用して手持ちの追跡を行っています。機能を使っCamshift()てハンドトラッキングはできたのですが安定せず、ハンドを安定させてもトラッキングの動きがほとんどありませんでした。そのため、正しい位置でマウスのクリック操作を行うことができませんでした。誰かがこれを理解するのを手伝ってください。

void TrackingObjects::drawRectangle(CvRect objectLocation){
CvPoint p1, p2,mou;
CvRect crop;
p1.x = objectLocation.x;
p2.x = objectLocation.x + objectLocation.width;

p1.y = objectLocation.y;
p2.y = objectLocation.y + objectLocation.height;

cvRectangle(image,p1,p2,CV_RGB(0,255,0),1,CV_AA,0);

mou.x=(p2.x-p1.x)/2;
mou.x=p1.x+mou.x;
mou.y=(p2.y-p1.y)/2;
mou.y=p1.y+mou.y;

SetCursorPos(mou.x,mou.y);

}

上記のコードでは、追跡されたオブジェクトの位置をobectLocationパラメーターで取得し、追跡された領域に四角形を描画しました。その中心を取得して、マウスの移動を行いました。

イベントを行うために手のひらを閉じている間MouseDown、追跡対象の位置が変更されています。

4

1 に答える 1

7

答えはカルマン フィルターです。このコードを使用できます。下の図でわかるように、フィルタリングされた結果 (緑色の線) は、トラッカーの突然の変位を無視します (シアンは元の追跡結果を示しています)。

ここに画像の説明を入力

于 2013-03-28T13:26:26.283 に答える