---
title: contourArea
description: "contourArea用于计算轮廓（contour）的面积。轮廓是图像中一系列连续的点，可以描述图像中物体的边界。contourArea函数可以获得这些轮廓所围区域的面积。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0037.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0037.html
indexId: 2136c3c0cdb61277147f132ad1ceb9c4b67587ffa6a48071f971aa5d7f8fcb0977
---
# contourArea

#### 函数功能

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


#### 函数接口

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


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| contour | 输入的轮廓。 | 非空、单通道 | 输入 |
| oriented | 返回的面积。默认值为false。 | true：返回的面积将带有符号，可以用于确定轮廓的方向（顺时针或逆时针） false：返回的面积为绝对值 | 输入 |


#### 返回值

- 轮廓面积大小。


#### 示例

```
#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;
}
```

运行结果：

```
轮廓面积: 4.0
```
