【发布时间】:2012-11-04 00:14:53
【问题描述】:
大家好。
我仍在使用the same old program,到目前为止,我设法根据轮廓矩的计算找到了最大轮廓的面积和坐标。
double m_00 = cvGetSpatialMoment( &moments, 0, 0 ); //The area
double m_10 = cvGetSpatialMoment( &moments, 1, 0 );
double m_01 = cvGetSpatialMoment( &moments, 0, 1 );
float gravityX = (m_10 / m_00); //center of x-axis
float gravityY = (m_01 / m_00); //center of y-axis
...我得到的是这样的:
...运行良好。但现在我想获取轮廓/对象的 x 轴和 y 轴的长度,如下所示:
问题是有什么函数可以计算轮廓的x轴和y轴长度吗?如果有,谁能给我一些线索怎么做? p>
提前致谢。干杯。
P/S:The program我上面链接的是旧的,所以它有一些错误。
【问题讨论】:
-
你看过这个吗?有帮助吗? stackoverflow.com/questions/9971162/…
-
看起来很简单......只需遍历整个图像并注意标记为在轮廓上的像素的最小和最大 x 和 y 值。您的红色轮廓图像是如何生成的?
-
@Rook:我使用 cvDrawContours 作为红色轮廓。
-
@joey:我已经尝试过你给的链接中的 cvArcLength,但问题是它只能找到 x 轴长度而不能找到 Y 轴。顺便说一句,谢谢你的建议
-
那么你甚至不需要检查图像;您只需遍历传入的
CvSeq即可绘制轮廓并检查该序列中每个点的 x、y 值,对吗?
标签: c++ c image-processing opencv