contourArea用于计算轮廓(contour)的面积。轮廓是图像中一系列连续的点,可以描述图像中物体的边界。contourArea函数可以获得这些轮廓所围区域的面积。
1 | double contourArea(InputArray contour, bool oriented = false); |
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
contour |
输入的轮廓。 |
非空、单通道 |
输入 |
oriented |
返回的面积。默认值为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 |