opencv findcontours函数
OpenCV是一个开源的计算机视觉库,它可以在各种平台上使用。库包含了许多模块,这些模块可以处理图像、视频、三维成像、物体检测等等,其中一个重要的模块是“图像处理”,它提供了许多基本的图像处理函数。
在图像处理中,寻轮廓是一个常见的任务。OpenCV的“findContours()”函数是寻轮廓的重要工具。该函数能够搜索图像中的所有连通区域,并将每个连通区域的轮廓上的点转换为一个向量。因此,该函数的返回值是一个包含所有轮廓的向量。
该函数的语法如下:
findContours(image, contours, hierarchy, mode, method, offset=cv::Point())
参数解释:
轮廓检索模式:
- RETR_EXTERNAL:
表示只检测外轮廓,不检测内部的轮廓。例如只检测图像边界的轮廓。
![image.png](attachment:image.png)
- RETR_CCOMP:
表示检测所有轮廓,但是只有两层轮廓,一层是外层轮廓,另一个是空心内部轮廓。比如一个圆形中的嵌套矩形,就可以使用这个模式来检测,这样可以将外圆的轮廓和内矩形的轮廓分别储存。
轮廓逼近方法:
这个参数决定检测到的轮廓以多少的精度来逼近实际图形,共有三种可选模式:
字符串函数的头文件 以下是一个简单的程序示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
if (pty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
Mat binary_output;
threshold(img, binary_output, 128, 255, THRESH_BINARY);
Mat conMat = Mat::zeros(img.size(),CV_8UC3);
for(int i=0;i<contours.size();++i)
{
drawContours(conMat, contours, i, Scalar(0,255,0), 2, LINE_AA);
}
imshow("Contours Image",conMat);
return 0;
}
```
findContours函数可以处理输入任何大小和形状的二值图像,它会从输入的图像中自动检测出连通的区域并保存,并返回所有的轮廓点。无论是简单的矩形还是复杂的形状都可以使用相同的函数来处理,而且它的运行非常快。因此,在许多视觉应用程序中,该函数是非常实用的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论