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小时内删除。