比较两张受电弓图片,第一张为正常受电弓图片,第二张为结构异常受电弓图片,找出第二张图片结构异常并定位异常位置,将异常位置圈出来并输出图片,生成c++代码
时间: 2024-03-05 15:51:01 浏览: 23
为了对比两张受电弓图片,我们需要首先读取这两张图片。然后,我们可以使用图像处理算法来找出第二张图片中的结构异常,并定位异常位置。
以下是一个使用OpenCV库进行图像处理的C++代码示例:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取两张受电弓图片
Mat img1 = imread("normal.jpg");
Mat img2 = imread("abnormal.jpg");
// 转换为灰度图像
cvtColor(img1, img1, COLOR_BGR2GRAY);
cvtColor(img2, img2, COLOR_BGR2GRAY);
// 计算两张图像的差异
Mat diff;
absdiff(img1, img2, diff);
// 阈值化处理
Mat thresh;
threshold(diff, thresh, 50, 255, THRESH_BINARY);
// 膨胀操作
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(thresh, thresh, kernel);
// 查找轮廓
vector<vector<Point>> contours;
findContours(thresh, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 在第二张图片上标记异常位置
Mat result = img2.clone();
for (int i = 0; i < contours.size(); i++)
{
Rect rect = boundingRect(contours[i]);
rectangle(result, rect, Scalar(0, 0, 255), 2);
}
// 显示结果
imshow("Result", result);
waitKey(0);
return 0;
}
```
在上面的代码中,我们首先读取了两张受电弓图片,并将它们转换为灰度图像。然后,我们计算了两张图像的差异,并使用阈值化处理和膨胀操作来查找轮廓。最后,我们在第二张图片上标记了异常位置并输出了结果。
需要注意的是,在使用上述代码时,需要将`normal.jpg`和`abnormal.jpg`替换为实际的图片文件名。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)