OpenCV的凸包没有给出正确的输出

时间:2015-06-05 07:39:26

标签: c++ image matlab opencv convex-hull

这是我输入的二进制图像:

enter image description here

现在我想使用OpenCV获取它的凸包。为此,我写了以下代码:

input = imread('input.jpg');
[x, y] = find(input);
k = convhull(x, y);
plot(y(k), x(k), 'r-', y, x, 'b.');

这是输出:

enter image description here

然而,在Matlab中,当我编写以下代码时:

jdbc:h2:D:/data;AUTO_SERVER=true;MVCC=true;CACHE_SIZE=524288

这给了我我想要的东西(红线代表我想要的凸包):

enter image description here

那么,我怎样才能在OpenCV中获得相同的结果?我应该在这里做错什么?谢谢。

1 个答案:

答案 0 :(得分:2)

可能这个答案已经很晚了,但对于那些仍然在搜索的人来说,这是答案。

您不需要采取轮廓。只需使用findNonZero()方法从二进制图像中取出所有非零点,然后将convexHull应用于该组点。它会完美地运作。