让代码更简单

当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

OpenCV计算轮廓面积、周长或曲线长度函数详解

今天给大家带来的是关于图像中轮廓区域的面积、周长与不规则图形的曲线周长计算方式,下面详细介绍了在opencv中函数的构成与参数含义说明,帮助大家尽快掌握其用法。

ContourArea

计算整个轮廓或部分轮廓的面积

double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ );
contour
轮廓 (边界点的序列或数组).
slice
感兴趣轮廓部分的起始点,缺省是计算整个轮廓的面积。

函数 cvContourArea 计算整个轮廓或部分轮廓的面积。 对后面的情况,面积表示轮廓部分和起始点连线构成的封闭部分的面积。如下图所示:

OpenCV计算轮廓面积、周长或曲线长度函数详解

OpenCV计算轮廓面积、周长或曲线长度函数详解

注: 轮廓的方向影响面积的符号。因此函数也许会返回负的结果。应用函数 fabs() 得到面积的绝对值。

ArcLength

计算轮廓周长或曲线长度

double cvArcLength( const void* curve, CvSlice slice=CV_WHOLE_SEQ, int is_closed=-1 );
curve
曲线点集序列或数组
slice
曲线的起始点,缺省是计算整个曲线的长度
is_closed
表示曲线是否闭合,有三种情况:

  • is_closed=0 – 假设曲线不闭合
  • is_closed>0 – 假设曲线闭合
  • is_closed<0 – 若曲线是序列,检查 ((CvSeq*)curve)->flags 中的标识 CV_SEQ_FLAG_CLOSED 来确定曲线是否闭合。否则 (曲线由点集的数组 (CvMat*) 表示) 假设曲线不闭合。

函数 cvArcLength 通过依次计算序列点之间的线段长度,并求和来得到曲线的长度。

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论 抢沙发

×

请作者吃根烤肠!

支付宝