contourArea

函数功能

contourArea用于计算轮廓(contour)的面积。轮廓是图像中一系列连续的点,可以描述图像中物体的边界。contourArea函数可以获得这些轮廓所围区域的面积。

函数接口

1
double contourArea(InputArray contour, bool oriented = false);

参数

参数名

描述

取值范围

输入/输出

contour

输入的轮廓。

非空、单通道

输入

oriented

返回的面积。默认值为false。

  • true:返回的面积将带有符号,可以用于确定轮廓的方向(顺时针或逆时针)。
  • false:返回的面积为绝对值。

输入

返回值

错误码

错误码

描述

INVALID_PARAM_MSG

输入轮廓为空。

NOT_SUPPORT_MSG

输入轮廓类型错误。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 创建一个二值图像
    cv::Mat src = (cv::Mat_<uint8_t>(5, 5) << 0, 0, 0, 0, 0,
                                              0, 255, 255, 255, 0,
                                              0, 255, 0, 255, 0,
                                              0, 255, 255, 255, 0,
                                              0, 0, 0, 0, 0);

    // 查找轮廓
    std::vector<std::vector<cv::Point>> contours;
    cv::findContours(src, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

    // 计算第一个轮廓的面积
    double area = cv::contourArea(contours[0]);

    std::cout << "轮廓面积: " << area << std::endl;

    return 0;
}

运行结果:

1
轮廓面积: 4.0