1

Android2.2でOpenCV2.3.1を使用して、Samsung Galaxy Aceで正常に機能しているように見えるビットマップの輪郭を見つけましたが、これらの輪郭の移動についてサポートが必要です。私の目的は、選択した輪郭を別の場所にドラッグしたときにユーザーの指に追従させることです。どんな種類の助けもいただければ幸いです。

編集: ユーザーのタッチに基づいて輪郭を移動できるようになりましたが、新しい位置に留まりません。したがって、元の位置から画像を消去して、新しい位置に再描画する必要があると思います。さらに、輪郭内の画像のピクセルではなく、移動する周囲の輪郭のみです。私は画像のピクセルについてもっと心配しています。画像のピクセルを新しい場所に移動するにはどうすればよいですか?また、輪郭内のピクセルの座標をなんとかして取得できれば素晴らしいと思います。

申し訳ありませんが、画像をアップロードしたかったのですが、この段階では新しいメンバーは画像をアップロードできないようです。たとえば、線をピンクで囲む輪郭があります。ドラッグすると、輪郭だけが移動し、線の黒いピクセルはまったく移動しません。ピンクの輪郭内の黒いピクセルを動かす方法はありますか?

もう1つの問題は、円や正方形などの閉じた図形でコードを試してみると、2つの輪郭が表示されることです。1つは内側の境界用で、もう1つは外側の境界用です。しかし、前にも言ったように、私は画像のピクセルにもっと興味があります。助けてください。

PS-画像は何でも、どんな形でもかまいません。線の例をとったところです。

4

1 に答える 1

1

まず、ビットマップまたはキャンバスにTouchListener/ ClickListener(または他の何か、私にはわかりません)を追加する必要があります。Android API

ユーザーが画面に触れたとき(リスナーが起動したとき)、ユーザーが選択した輪郭を特定する必要があります。このためには、pointPolygonTest関数を使用します。

移動について:Contourはsのシーケンス(vector)であるPointため、輪郭をシフト(移動)する場合は、次のことを行う必要があります(c ++コード):

void moveContour(vector<Point>& contour, int dx, int dy)
{
    for (size_t i=0; i<contour.size(); i++)
    {
        contour[i].x += dx;
        contour[i].y += dy;
    }
}

それが役に立てば幸い。

于 2012-07-03T11:18:41.487 に答える