opencv2 工业缺陷检测 c++代码
时间: 2024-05-19 10:09:42 浏览: 126
OpenCV是一款非常强大的开源计算机视觉库,它可以实现各种图像和视频处理任务,包括工业缺陷检测。下面是一个使用OpenCV2实现工业缺陷检测的C++代码示例:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
// 读取图像
Mat src = imread("test.png", IMREAD_GRAYSCALE);
// 高斯滤波
GaussianBlur(src, src, Size(3, 3), 0);
// Canny边缘检测
Mat edges;
Canny(src, edges, 50, 200);
// 膨胀操作
Mat dilate_kernel = getStructuringElement(MORPH_ELLIPSE, Size(3, 3));
dilate(edges, edges, dilate_kernel);
// 轮廓检测
vector<vector<Point>> contours;
findContours(edges, contours, RETR_LIST, CHAIN_APPROX_SIMPLE);
// 绘制矩形框
for (size_t i = 0; i < contours.size(); i++)
{
Rect rect = boundingRect(contours[i]);
if (rect.width > 10 && rect.height > 10) // 过滤掉太小的矩形
{
rectangle(src, rect, Scalar(0, 0, 255), 2);
}
}
// 显示结果
imshow("result", src);
waitKey();
return 0;
}
```
这段代码实现了以下几个步骤:
1. 读取图像并转为灰度图像
2. 进行高斯滤波,平滑图像
3. 使用Canny边缘检测算法检测图像边缘
4. 对边缘进行膨胀操作,使得边缘更加明显
5. 使用轮廓检测算法检测所有轮廓
6. 对于每个轮廓,计算其外接矩形,并过滤掉太小的矩形
7. 在原图像上绘制矩形框,标记出缺陷位置
8. 显示结果
阅读全文