基于opencv和c++ ,如何把四张像素512*512的图像,按照左右间隔1cm 上下间隔1cm的距离合并成一张图像,请生成这段代码
时间: 2024-02-18 20:01:20 浏览: 87
好的,以下是基于OpenCV和C++的代码实现:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读入四张图像
Mat img1 = imread("1.jpg", IMREAD_COLOR);
Mat img2 = imread("2.jpg", IMREAD_COLOR);
Mat img3 = imread("3.jpg", IMREAD_COLOR);
Mat img4 = imread("4.jpg", IMREAD_COLOR);
// 合并后图像的大小为1026*1026
int width = 1026;
int height = 1026;
// 创建一个空白的大图像
Mat dst = Mat::zeros(height, width, CV_8UC3);
// 按照要求将四张图像拼接到大图像上
Rect roi1 = Rect(0, 0, 512, 512);
Rect roi2 = Rect(513, 0, 512, 512);
Rect roi3 = Rect(0, 513, 512, 512);
Rect roi4 = Rect(513, 513, 512, 512);
img1.copyTo(dst(roi1));
img2.copyTo(dst(roi2));
img3.copyTo(dst(roi3));
img4.copyTo(dst(roi4));
// 显示结果
imshow("dst", dst);
waitKey(0);
return 0;
}
```
注意,以上代码中的四张图像需要放在与代码文件相同的目录下,并且命名为1.jpg、2.jpg、3.jpg、4.jpg。如果需要修改图像的路径和名称,可以在imread()函数中进行修改。另外,这里假设四张图像的大小都为512*512,如果实际大小不同,需要修改拼接的位置和大图像的大小。