ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenCV contourArea、arcLength 计算轮廓面积与长度

2022-02-24 13:33:51  阅读:190  来源: 互联网

标签:bin src contourArea Mat img arcLength OpenCV 轮廓


计算轮廓面积:contourArea 函数

double contourArea(InputArray contour, bool oriented = false);
  • contour,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
  • oriented,面向区域标识符。有默认值 false。若为 true,该函数返回一个带符号的面积值,正负取决于轮廓的方向(顺时针还是逆时针)。若为 false,表示以绝对值返回。

计算轮廓长度:arcLength 函数

arcLength 函数用于计算封闭轮廓的周长或曲线的长度。

double arcLength(InputArray curve, bool closed);
  • curve,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
  • closed,用于指示曲线是否封闭。

代码示例:

 1 #include<opencv.hpp>
 2 #include<iostream>
 3 #include<vector>
 4 using namespace cv;
 5 using namespace std;
 6 int main() {
 7     Mat src = imread("C:/Users/齐明洋/Desktop/示例图片/7.jpg");
 8     imshow("src", src);
 9 
10     //转换为二值图像
11     Mat bin_img;
12     cvtColor(src, bin_img, COLOR_BGR2GRAY);
13     threshold(bin_img, bin_img, 55, 255, THRESH_BINARY_INV);
14     imshow("bin_img", bin_img);
15 
16     //寻找轮廓
17     vector<vector<Point> >contours;
18     findContours(bin_img, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);
19 
20     //计算并输出面积周长
21     Mat dst = Mat::zeros(src.size(), src.type());
22     RNG rngs = { 12345 };
23     for (int i = 0; i < contours.size(); i++) {
24         Scalar colors = Scalar(rngs.uniform(0, 255), rngs.uniform(0, 255), rngs.uniform(0, 255));
25         drawContours(dst, contours, i, colors, 1);
26         cout << i<<" 的面积:"<<contourArea(contours[i]) << endl;
27         cout << "  周长:" << arcLength(contours[i], true) << endl;
28     }
29     imshow("dst", dst);
30 
31     waitKey(0);
32 }

效果演示:

 

标签:bin,src,contourArea,Mat,img,arcLength,OpenCV,轮廓
来源: https://www.cnblogs.com/ybqjymy/p/15931341.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有