c++ opencv 电子元器件 缺陷检测 代码
时间: 2023-07-24 15:22:40 浏览: 136
电子元器件缺陷检测是一个广泛应用的领域,OpenCV可以帮助我们实现这个任务。下面是一个基本的C++ OpenCV电子元器件缺陷检测代码示例,供您参考:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("component.jpg"); // 读取图片
if (image.empty()) // 判断是否读取成功
{
cout << "读取图片失败" << endl;
return -1;
}
Mat gray, binary;
cvtColor(image, gray, COLOR_BGR2GRAY); // 转为灰度图像
threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU); // 二值化
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); // 定义结构元素
morphologyEx(binary, binary, MORPH_OPEN, kernel); // 开运算去噪声
vector<vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); // 寻找轮廓
for (int i = 0; i < contours.size(); i++)
{
Rect rect = boundingRect(contours[i]); // 获取轮廓的外接矩形
if (rect.width > 10 && rect.height > 10) // 过滤掉小的轮廓
{
rectangle(image, rect, Scalar(0, 0, 255), 2); // 在原图上画出缺陷矩形
}
}
namedWindow("component", WINDOW_NORMAL); // 创建窗口
imshow("component", image); // 显示图片
waitKey();
return 0;
}
```
以上代码实现了读取图片,灰度化,二值化,去噪声,轮廓提取,缺陷检测矩形绘制,显示图片等功能。您可以根据自己的需求对代码进行修改和优化。
阅读全文