当然可以!

以下是一个使用OpenCV检测轮廓的示例程序。该程序使用C++编写,需要安装OpenCV库。

#include <opencv2/opencv.hpp>
#include <iostream>

int main(int argc, char** argv) {
    // 读入图像
    cv::Mat image = cv::imread("example.jpg");

    // 转换为灰度图像
    cv::Mat gray;
    cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);

    // 对图像进行二值化处理
    cv::Mat binary;
    cv::threshold(gray, binary, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);

    // 查找轮廓
    std::vector<std::vector<cv::Point>> contours;
    std::vector<cv::Vec4i> hierarchy;
    cv::findContours(binary, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);

    // 在原图像上绘制轮廓
    cv::Mat result = image.clone();
    cv::drawContours(result, contours, -1, cv::Scalar(0, 0, 255), 2);

    // 显示结果
    cv::imshow("Result", result);
    cv::waitKey(0);

    return 0;
}

该程序的主要步骤如下:

  1. 读入图像;
  2. 将图像转换为灰度图像;
  3. 对灰度图像进行二值化处理;
  4. 使用cv::findContours函数查找轮廓;
  5. 在原图像上绘制轮廓;
  6. 显示结果。

在这个例子中,我们使用了cv::findContours函数来查找轮廓。该函数需要四个参数:

  1. 输入图像;
  2. 输出轮廓向量;
  3. 输出轮廓的层级关系;
  4. 轮廓的检索模式和近似方法。

在本例中,我们将轮廓的检索模式设置为cv::RETR_TREE,表示检索所有轮廓并建立轮廓之间的层级关系。近似方法设置为cv::CHAIN_APPROX_SIMPLE,表示使用简单的逼近算法来压缩轮廓。

最后,我们使用cv::drawContours函数在原图像上绘制轮廓。

希望这个简单的例子可以帮助你开始使用OpenCV检测轮廓。

可以帮我用opencv写一个检测轮廓的程序吗

原文地址: https://www.cveoy.top/t/topic/bnwv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录