让代码更简单

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

重要:本文最后更新于2018-12-05 10:58:46,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

今天给大家带来的是关于图像中轮廓区域的面积、周长与不规则图形的曲线周长计算方式,下面详细介绍了在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 通过依次计算序列点之间的线段长度,并求和来得到曲线的长度。

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

3 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐