1.介绍轮廓面积与轮廓长度
轮廓面积(Contour Area)是指轮廓所包围的区域的总面积。通常情况下,轮廓面积的单位是像素的平方。
轮廓长度(Contour Length)又称周长(Perimeter),表示轮廓的闭合边界的长度。轮廓的边界可以看作是由一系列相邻像素点组成的连续路径,轮廓长度即为该路径的总长度。通常情况下,轮廓长度的单位是像素。
2.轮廓面积 contourArea()
double cv::contourArea ( InputArray contour,
bool oriented = false
)文章来源:https://www.toymoban.com/news/detail-706475.html
- contour:轮廓的像素点
- oriented;区域面积是否具有方向的标志,true表示面积具有方向性,false表示不具有方向性,默认值为不具有方向性的false。
3.轮廓长度arcLength()
double cv::arcLength ( InputArray curve,
bool closed
)
- curve:轮廓或者曲线的2D像素点。
- closed:轮廓或者曲线是否闭合标志,true表示闭合。
4.示例代码
//计算轮廓面积与长度
void Contour_areaAndlength(Mat image){
Mat gray,binary;
cvtColor(image,gray,COLOR_BGR2GRAY);//灰度化
GaussianBlur(gray,gray,Size(9,9),2,2);//滤波
threshold(gray,binary,170,255,THRESH_BINARY|THRESH_OTSU);//自适应二值化
//轮廓检测
vector<vector<Point>> contours;//轮廓
vector<Vec4i> hierarchy;//存放轮廓结构变量
findContours(binary,contours,hierarchy,RETR_TREE,CHAIN_APPROX_SIMPLE,Point());
ostringstream ss;
//输出轮廓面积
for(int t=0;t<contours.size();t++){
double areal= contourArea(contours[t]);
ss <<"第"<< t<<"轮廓面积:"<<areal<<std::endl;
}
//输出轮廓长度
for(int t=0;t<contours.size();t++){
double length2= arcLength(contours[t],true);
ss <<"第"<< t<<"轮廓长度:"<<length2<<std::endl;
}
LOGD("%s",ss.str().c_str());
}
文章来源地址https://www.toymoban.com/news/detail-706475.html
到了这里,关于OpenCV(三十三):计算轮廓面积与轮廓长度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!