seo搜索引擎优化就业前景,网页优化,实物黄金哪个网站做的好,焦作黄河交通学院博主联系方式#xff1a; QQ:1540984562 QQ交流群#xff1a;892023501 群里会有往届的smarters和电赛选手#xff0c;群里也会不时分享一些有用的资料#xff0c;有问题可以在群里多问问。 目录前言1、轮廓面积获取函数2、轮廓周长获取函数3、轮廓圆形度计算4、矩形度计算… 博主联系方式 QQ:1540984562 QQ交流群892023501 群里会有往届的smarters和电赛选手群里也会不时分享一些有用的资料有问题可以在群里多问问。 目录前言1、轮廓面积获取函数2、轮廓周长获取函数3、轮廓圆形度计算4、矩形度计算5、宽长比计算6、周径比计算总结最终示例前言
之前学习了连通域和轮廓的知识其中要框定出自己想要的目标物体我们往往需要用一些ifelse语句用来筛选。 这里整理一下常用的筛选条件。 先验知识链接 https://blog.csdn.net/qq_42604176/article/details/105588018 1、轮廓面积获取函数
输入当前轮廓点集,输出该轮廓点集的面积
area contourArea(contours[t]);//计算轮廓面积2、轮廓周长获取函数
输入当前轮廓点集,第二个参数bool closed表示轮廓是否封闭的 输出该轮廓点集的周长
len arcLength(contours[t], true);//计算轮廓周长3、轮廓圆形度计算
原本计算公式 网上的公式一般是这个e4π 面积/周长 * 周长 这里将周长等价于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) 0.1 //表示宽长比在1附近-0.1内浮动6、周径比计算
周径比的周即周长径是指上面找到的轮廓最小外接矩形的长的一条边
lenratio len / (minrect.size.height minrect.size.width ? minrect.size.height : minrect.size.width);总结最终示例
#include opencv2/opencv.hpp
#include iostream
#include windows.h
#include stdio.h
#include time.h
#include math.h
//#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 src image load failed! endl;return -1;}//显示原图namedWindow(原图, WINDOW_NORMAL);imshow(原图, src_image);//高斯滤波去噪声Mat blur_image;GaussianBlur(src_image, blur_image, Size(3, 3), 0, 0);imshow(GaussianBlur, blur_image);//灰度变换与二值化Mat gray_image, binary_image;cvtColor(blur_image, gray_image, COLOR_BGR2GRAY);threshold(gray_image, binary_image, 100, 255, THRESH_BINARY);imshow(binary, binary_image);//形态学闭操作(粘合断开的区域)Mat morph_image;Mat kernel getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));morphologyEx(binary_image, morph_image, MORPH_CLOSE, kernel, Point(-1, -1), 1);imshow(morphology, morph_image);//查找所有外轮廓vector vectorPoint contours;vectorVec4i hireachy;findContours(binary_image, contours, hireachy, RETR_EXTERNAL, CHAIN_APPROX_NONE, Point());//定义结果图Mat result_image Mat::zeros(src_image.size(), CV_8UC3);//drawContours(result_image, contours, -1, Scalar(0, 0, 255), 1, 8, hireachy);//画出所有轮廓//初始化周长、面积、圆形度、周径比double len 0, area 0, roundness 0, lenratio 0;float rectangularity;//循环找出所有符合条件的轮廓for (size_t t 0; t contours.size(); t){Scalar color Scalar(g_rng.uniform(0, 255),g_rng.uniform(0, 255), g_rng.uniform(0, 255));//任意值//条件过滤掉小的干扰轮廓Rect rect boundingRect(contours[t]); //垂直边界最小矩形if (rect.width 10)continue;//画出找到的轮廓drawContours(result_image, contours,t,color,1, 8, hireachy);//绘制轮廓的最小外结矩形RotatedRect minrect minAreaRect(contours[t]); //最小外接矩形int minrectmianji minrect.size.height * minrect.size.width;Point2f P[4]; //四个顶点坐标minrect.points(P);for (int j 0; j 3; j){line(result_image, P[j], P[(j 1) % 4], color, 1);}cout 最小外接矩形尺寸 minrect.size endl;//最小外接矩形尺寸cout 最小外接矩形面积 minrectmianji endl;//最小外接矩形尺寸//绘制轮廓的最小外结圆Point2f center; float radius;minEnclosingCircle(contours[t], center, radius); //最小外接圆circle(result_image, center, radius, color,1);//计算面积、周长、圆形度、周径比area contourArea(contours[t]);//计算轮廓面积len arcLength(contours[t], true);//计算轮廓周长roundness (4 * CV_PI * area) / (len * len);//圆形度if (minrectmianji 0)rectangularity 0;else rectangularity area / minrectmianji;//周径比这里的周即周长径是指上面找到的轮廓最小外接矩形的长的一条边lenratio len / (minrect.size.height minrect.size.width ? minrect.size.height : minrect.size.width);//输出结果cout 轮廓 t endl;cout 周长 len endl;cout 面积 area endl;cout 圆形度 roundness endl;cout 矩形度 rectangularity endl;cout 周径比 lenratio endl;}//显示结果namedWindow(轮廓图, WINDOW_NORMAL);imshow(轮廓图, result_image);waitKey(0);return 0;
}原图 轮廓效果图 参数一览 参考链接 https://blog.csdn.net/Lemon_jay/article/details/89519627 https://blog.csdn.net/qq_42604176/article/details/105588018 https://blog.csdn.net/duiwangxiaomi/article/details/92565308