我遇到了这个问题:我需要在我的Python代码中使用ConvexHull
函数,我需要它与MATLAB中ConvHulln
的工作方式完全相同,但它们会给出不同的结果。这是一个示例(我正在使用scipy.spatial.ConvexHull
,但我已尝试使用cv2.convexHull
和Python ConvexHull
,但他们没有给出正确的结果。
使用的MATLAB命令是:k = convhulln([r, c]);
,Python命令使用k = ConvexHull(rc,qhull_options='Qt').simplices
获得的结果不同:
MATLAB:
k=
[[104 1] [1 8] [8 17] [17 103] [103 125] [125 136] [136 162] [162 166] [166 167] [167 163] [163 104]]
的Python:
k=[[ 16 102][103 0][ 7 0][ 7 16][162 166][162 103][124 102][124 135][161 135][165 166][165 161]]
结果是正确的(在Python中,索引是MATLAB-1),但顺序是不同的。有人有解决方案吗?我需要Python的顺序与MATLAB的顺序相同。
答案 0 :(得分:0)
在3D Convexhull中遇到类似的问题。 我的走动是根据指标排序的 此外,Matlab凸包的方向始终一致,但是python并非如此。因此,您还应检查每个面的法线是否与凸面hull.euqations [:,[1,2,3]]一致,重新排列索引顺序,以便每个面的法线都一致,那么我们将拥有完全相同的面订单。
对于2d,我认为差异是起点。我相信Matlab总是从最小索引开始。