如何获取轮廓(连通域)的面积、周长、矩形度、圆形度、宽长比、周径比等形状描述符?

您所在的位置:网站首页 周长的长度怎么求面积公式 如何获取轮廓(连通域)的面积、周长、矩形度、圆形度、宽长比、周径比等形状描述符?

如何获取轮廓(连通域)的面积、周长、矩形度、圆形度、宽长比、周径比等形状描述符?

2024-07-09 22:33| 来源: 网络整理| 查看: 265

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。

目录 前言1、轮廓面积获取函数2、轮廓周长获取函数3、轮廓圆形度计算4、矩形度计算5、宽长比计算6、周径比计算总结:最终示例

前言

之前学习了连通域和轮廓的知识,其中要框定出自己想要的目标物体,我们往往需要用一些if,else语句用来筛选。 这里整理一下常用的筛选条件。 先验知识链接:

https://blog.csdn.net/qq_42604176/article/details/105588018

1、轮廓面积获取函数

输入当前轮廓点集,输出该轮廓点集的面积

area = contourArea(contours[t]);//计算轮廓面积 2、轮廓周长获取函数

输入当前轮廓点集,第二个参数:bool closed:表示轮廓是否封闭的 输出该轮廓点集的周长

len = arcLength(contours[t], true);//计算轮廓周长 3、轮廓圆形度计算

原本计算公式: 计算公式 网上的公式一般是这个:e=(4π 面积)/(周长 * 周长); 这里将周长等价于2pi*r;

area = contourArea(contours[t]);//计算轮廓面积 len = arcLength(contours[t], true);//计算轮廓周长 roundness = (4 * CV_PI * area) / (len * len);//圆形度 4、矩形度计算

矩形度

//先计算最小外接矩形的面积: RotatedRect minrect = minAreaRect(contours[t]); //最小外接矩形 area = contourArea(contours[t]);//计算轮廓面积 int minrectmianji = minrect.size.height * minrect.size.width; if (minrectmianji == 0)rectangularity = 0; else rectangularity = area / minrectmianji;

注意点: minrect.size是个数组,表述的是尺寸即:width,height

5、宽长比计算

宽长比:最小外接矩形的长轴与短轴的比值

RotatedRect rbox = minAreaRect(contours[i]); fabs(rbox.size.width * 1.0 / rbox.size.height - 1) minrect.size.width ? minrect.size.height : minrect.size.width); 总结:最终示例 #include #include #include "windows.h" #include #include #include //#include "My_ImageProssing_base.h" #define WINDOW_NAME "【程序窗口】" //为窗口标题定义的宏 using namespace cv; using namespace std; RNG g_rng(12345); int main() { //改变控制台字体颜色 system("color 02"); //读取图像 Mat src_image = imread("D:\\opencv_picture_test\\阈值处理\\硬币.png", 1); //出错判断 if (!src_image.data) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3