2016-04-28 5 views
1

私はopencvを新しくしました。指が1本上がっていれば画面上に線が引かれているかどうかを検出したい、チュートリアルを読んでいます。指を正確に追跡しています。私は以下のようなことをします。私が指を動かすと、短い赤い線が引かれますが、それは一時的であり、直後に消えます。私はそこにとどまるために描画線が必要ですが、私はそれを行う方法がわかりませんし、解決策を見つけることができません、本当にありがとう、あなたから聞くことを望んでいます。opencvで指を追跡して線を引く

int lastx = -1; 
int lasty = -1; 

void trackingfinger(....) 
{ 
......... 
if(drawing == true) 
    draw(BGR_frame,Point finger) 
} 


void draw(BGR_frame, Point finger) 
{ 
    int x = finger.x; 
    int y = finger.y; 

    if (lastx > 0 && lasty > 0 && x > 0 && y > 0) 
    { 
    line(BGR_frame, Point(x, y), Point(lastx, lasty), Scalar(0, 0, 255), 2); 
    } 

    lastx = x; 
    lasty = y; 
} 

int main (void) 
{ 
while(true) 
{ 
..... the function is called here. 
} 
} 
+1

新しいポイントをいくつかの動的配列(例:std :: vector)にプッシュバックし、配列全体をループして描画しますポイントからポイントへの線。 – Micka

+1

@Mickaそれは動作します!あなたの考えに感謝します。私は、配列をチェックするのを忘れて少なくとも2つの要素を実行する必要があります。 – pexichdu

+0

よろしくお願いします。答えを入力するだけでしたが、中断されました:D – Micka

答えて

0

提示されたコード部分を正しく理解していれば、このようにすることはできません。どのように描画を開始するのか、いつ終了するのかを決めるのですか? line関数には、開始点と終了点が1つ必要です。

どちらかあなたはそれが指をフォローしたい場合=>最後に、それは1行

であるか、またはいくつかのアクションを実装していないだろう、指が動いているすべての座標、画素ごとに「描きます」、 "今すぐ指先を始点にする"と "終点を指すように"

+0

1本の指が上になると描画を開始し、1本以上の指がある場合に停止します(凸欠陥を使用します)。申し訳ありませんが、今私はすべてのポイントとループ描画を保持するために動的配列を使用して、あなたはそれが古いエラーを避けるために2点以上を持っている必要がありますチェックして残って、ありがとう – pexichdu

関連する問題