c++ 版本的opencv findContours 怎么使用
时间: 2024-02-27 20:54:57 浏览: 142
C++ 版本的 OpenCV 中,`findContours` 函数的使用方法与 Python 版本基本相同。下面是一个示例代码,用于演示如何使用 `findContours` 函数查找并绘制图像中的轮廓:
```
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat img = imread("image.jpg");
// 转换为灰度图像
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 二值化处理
Mat thresh;
threshold(gray, thresh, 127, 255, THRESH_BINARY);
// 查找轮廓
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(thresh, contours, hierarchy, RET_TREE, CHAIN_APPROX_SIMPLE);
// 绘制轮廓
drawContours(img, contours, -1, Scalar(0, 255, 0), 2);
// 显示图像
imshow("Contours", img);
waitKey(0);
destroyAllWindows();
return 0;
}
```
在上面的代码中,我们首先使用 `imread` 函数读取一张图像,然后将其转换为灰度图像,并进行二值化处理。接着,使用 `findContours` 函数查找轮廓,并将其存储在 `contours` 变量中。最后,使用 `drawContours` 函数将轮廓绘制到原始图像上,并显示结果。
需要注意的是,C++ 版本中的 `findContours` 函数的参数与 Python 版本略有不同。具体而言,C++ 版本的 `findContours` 函数的第三个参数为 `hierarchy`,而 Python 版本为 `contours, hierarchy`,且返回值也不同。此外,C++ 版本的 `drawContours` 函数的第四个参数为 `Scalar(0, 255, 0)`,而 Python 版本为 `(0, 255, 0)`。
阅读全文