C++ OpenCV教程: 在图像轮廓上标记缺陷

本教程将演示如何使用C++和OpenCV库在图像轮廓上添加'缺陷'标签。这在计算机视觉应用中非常有用,例如产品缺陷检测。

代码示例

以下是完整的C++代码:

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

using namespace cv;
using namespace std;

int main()
{
    // 加载图像
    Mat image = imread('input.jpg');

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

    // 使用Canny边缘检测算法检测边缘
    Mat edges;
    Canny(gray, edges, 50, 150);

    // 找到轮廓
    vector<vector<Point>> contours;
    findContours(edges, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

    // 在轮廓上打上标签
    for (int i = 0; i < contours.size(); i++)
    {
        // 计算轮廓的面积
        double area = contourArea(contours[i]);

        // 如果面积小于1000,则认为是缺陷
        if (area < 1000)
        {
            // 在轮廓上打上'缺陷'标签
            Rect rect = boundingRect(contours[i]);
            putText(image, 'Defect', Point(rect.x, rect.y - 5), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 0, 255), 2);
        }
    }

    // 显示结果
    imshow('Result', image);
    waitKey(0);

    return 0;
}

代码解释

  1. 加载必要的库: 首先,我们包含了必要的OpenCV头文件。
  2. 加载图像: 使用imread函数加载输入图像。
  3. 转换为灰度: 将彩色图像转换为灰度图像。
  4. 边缘检测: 使用Canny边缘检测器检测图像中的边缘。
  5. 查找轮廓: findContours函数用于查找检测到的边缘的轮廓。
  6. 迭代轮廓: 循环遍历每个检测到的轮廓。
  7. 计算面积: 计算每个轮廓的面积。
  8. 标记缺陷: 如果轮廓面积小于预定义的阈值(此处为1000),则使用putText函数在该轮廓附近添加“缺陷”标签。
  9. 显示结果: 最后,显示结果图像。

总结

本教程介绍了如何使用C++和OpenCV在图像轮廓上标记缺陷。您可以修改此代码以适应您的特定需求,例如更改缺陷面积阈值或标签文本。

希望本教程对您有所帮助!

C++ OpenCV教程: 在图像轮廓上标记缺陷

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

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