Python中的OpenCV:有没有一种简单的方法来计算轮廓的曲率?

4

我知道你可以使用轮廓的矩来轻松计算质心和面积,但是有没有一种快速的方法在Python中使用OpenCV计算轮廓的曲率呢?

谢谢。

2个回答

3
在OpenCV中,轮廓是一个由对象边界点的(x,y)坐标组成的NumPy数组。例如,在此处描述了一种计算曲率的方法。
他们使用400个点(称为边界点)构成轮廓,并且: 在每个边界点上,我们通过将圆拟合到该边界点和距其10个边界点的两个点来计算边界曲率。边界曲率的大小然后被定义为该圆的半径的倒数。

另请参阅此篇论文中的视频

我不熟悉Python,因此无法为您建议一个圆插值函数;但是,为了将圆拟合到三个点,您可以按照Weisstein, Eric W. "Circle." From MathWorld--A Wolfram Web Resource中的(25)至(34)公式进行操作。

摘自https://math.stackexchange.com/a/1215914/10799


https://scicomp.stackexchange.com/questions/28058/calculating-curvature-from-height-contours - gansub
@gansub,很抱歉,我不理解你在https://scicomp.stackexchange.com上的问题。 - Alessandro Jacopson
与这个问题几乎相同 - 我有高度,我需要轮廓线和曲率。 - gansub
@gansub,我觉得你的问题不在于计算曲率,而是将点(x,y)转换为和从你的“光栅”中。 - Alessandro Jacopson

-1
您可以使用在这里描述的convexityDefects函数。有关Python用法,请参见教程

为了计算凸性缺陷,我猜我们需要一个二进制图像,其中点集具有强度1,其他点为0。凸性缺陷将与该点集相关(就像您分享的教程链接中显示的星形)。但是,是否可能使用这些点处的一阶和二阶导数在给定图像中的每个点处找到曲率? - Ruchir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接