两幅图像的差异在第二幅图像上标出
时间: 2024-02-11 12:03:45 浏览: 87
同样可以使用C++和OpenCV库来实现,只需要在标记差异点时将矩形框绘制在第二幅图像上即可。
以下是示例代码:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
// 读取两张图像
Mat img1 = imread("image1.jpg");
Mat img2 = imread("image2.jpg");
// 计算差异图像
Mat diff;
absdiff(img1, img2, diff);
// 二值化处理
Mat thresh;
threshold(diff, thresh, 0, 255, THRESH_BINARY);
// 查找轮廓
vector<vector<Point>> contours;
findContours(thresh, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 标记差异点
for (int i = 0; i < contours.size(); i++) {
Rect rect = boundingRect(contours[i]);
rectangle(img2, rect, Scalar(0, 0, 255), 2);
}
// 显示标记后的图像
imshow("Diff Image", img2);
waitKey(0);
destroyAllWindows();
return 0;
}
```
同样需要注意的是,在编译命令中需要链接OpenCV库:
```
g++ -o program main.cpp `pkg-config opencv --cflags --libs`
```