1

我已经使用 OpenCV 2.3.1 和 Android 2.2 来查找位图中的轮廓,这似乎在三星 Galaxy Ace 上运行良好,但现在我需要帮助来移动这些轮廓。我的目标是使选定的轮廓在拖动到不同位置时跟随用户的手指。任何形式的帮助将不胜感激。

编辑: 我现在可以根据用户的触摸移动轮廓,但是它们不会停留在新位置。所以,我假设我需要从原始位置删除图像并在新位置重绘它。此外,它只有周围的轮廓移动,而不是轮廓内的图像像素。我更关心图像像素。如何让图像像素移动到新位置?如果我能以某种方式获得轮廓内像素的坐标,那也很棒。

抱歉,我想上传图片,但新成员现阶段似乎无法上传图片。例如 - 我有围绕粉红色线的轮廓。当我拖动时,只有轮廓移动,线条的黑色像素根本不移动。有什么方法可以让粉红色轮廓内的黑色像素移动?

另一个问题是,当我在一个封闭的图形(如圆形或正方形)上尝试我的代码时,我会得到两个轮廓。一个用于内部边界,一个用于外部边界。但正如我之前所说,我对图像像素更感兴趣。请帮忙。

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 回答