OpenCV 4.5.1 findContours函数
时间: 2024-08-13 18:01:34 浏览: 84
自己编译的opencv4.5.1
OpenCV 4.5.1版本中的`findContours()`函数是一个强大的功能,它主要用于在二进制或灰度图像中寻找轮廓(contours)。这个函数的主要目的是从图像中分离出物体的边缘,并返回一个表示轮廓的结构,通常是`std::vector<std::vector<cv::Point>`,其中每个内部的`cv::Point`数组代表一个轮廓上的一段连续路径。
`findContours()`函数接收一个图像作为输入,可以设置一些选项,如模式(`RETR_EXTERNAL`,`RETR_LIST`,`RETR_TREE`等),用于确定轮廓的详细程度和组织形式;还有厚度参数(`CHAIN_APPROX_SIMPLE`或`CHAIN_APPROX_NONE`)来控制轮廓近似的方式。
使用`findContours()`的基本步骤包括:
1. 转换图像为二值(如有需要)
2. 应用`findContours()`函数
3. 遍历找到的轮廓,分析它们的形状和位置
下面是一个基础的使用示例:
```cpp
cv::Mat img; // 加载或处理后的图像
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); // 转为灰度
cv::threshold(gray, gray, 0, 255, cv::THRESH_BINARY_INV + cv::THRESH_OTSU); // 阈值化
std::vector<std::vector<cv::Point>> contours;
cv::findContours(gray, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
```
阅读全文