我目前正在做一个项目,要求我使用一些结构分析,比如寻找周边和区域。我已经成功获得了物体的轮廓。 当我使用contour.size()函数时,它返回1108(在这种情况下) 当我使用cv :: arclength(contour)函数时,它返回1200。
周长不应该是轮廓的点数(轮廓是物体的外部边界)?我应该相信哪一个?
答案 0 :(得分:0)
不一定,cv::arclength
总结了曲线中连续点之间的欧氏距离。
以下是cv::arclength
的代码段:
...
const Point2f* ptf = curve.ptr<Point2f>();
...
for( i = 0; i < count; i++ )
{
Point2f p = ptf[i];
float dx = p.x - prev.x, dy = p.y - prev.y;
buf[j] = dx*dx + dy*dy;
if( ++j == N || i == count-1 )
{
Mat bufmat(1, j, CV_32F, buf);
sqrt(bufmat, bufmat);
for( ; j > 0; j-- )
perimeter += buf[j-1];
}
prev = p;
}
return perimeter;