私は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
、追跡対象の位置が変更されています。