findcontours怎么用 基于c++
时间: 2023-12-02 16:04:22 浏览: 69
openCV :self_findcontours函数C++实现
在使用OpenCV中的findContours函数之前,首先需要对图像进行二值化处理,将图像转换为黑白二值图像。然后,可以调用findContours函数查找轮廓。
以下是一个基本的例子,使用OpenCV的C++接口实现图像的二值化和轮廓查找:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
//读取图像
Mat src = imread("image.jpg");
if (src.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
//将图像转换为灰度图像
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
//二值化处理
Mat binary;
threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
//查找轮廓
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(binary, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
//在原图像上绘制轮廓
Mat dst = src.clone();
drawContours(dst, contours, -1, Scalar(0, 0, 255), 2);
//显示图像
imshow("src", src);
imshow("binary", binary);
imshow("dst", dst);
waitKey(0);
return 0;
}
```
在上面的代码中,使用了OpenCV中的cvtColor函数将图像转换为灰度图像,然后使用threshold函数进行二值化处理。接着,使用findContours函数查找轮廓,并将轮廓绘制在原图像上。最后,使用imshow函数显示图像。
阅读全文