c++中两个vector存储各种的彩色图像数据,每个vector里面每10张彩色图像进行竖着拼接,然后两个vector竖着拼接的图像在水平拼接为一张彩色大图
时间: 2023-08-11 19:15:47 浏览: 45
可以使用OpenCV库来完成这个任务。首先,将两个vector中的图像读入到OpenCV的Mat对象中,然后使用vconcat()函数将每个vector中的10张图像竖着拼接成一张大图像。接着,使用hconcat()函数将两个大图像水平拼接在一起,最终得到一张彩色大图。
具体代码如下:
```c++
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;
using namespace std;
int main()
{
// 读入两个vector中的图像
vector<Mat> img_vec1, img_vec2;
for (int i = 0; i < 100; i++)
{
Mat img = imread("img_" + to_string(i) + ".jpg");
img_vec1.push_back(img);
}
for (int i = 0; i < 100; i++)
{
Mat img = imread("img_" + to_string(i+100) + ".jpg");
img_vec2.push_back(img);
}
// 竖着拼接每个vector中的10张图像
vector<Mat> img_vec1_v, img_vec2_v;
for (int i = 0; i < 10; i++)
{
vector<Mat> row_vec1, row_vec2;
for (int j = 0; j < 10; j++)
{
row_vec1.push_back(img_vec1[i*10+j]);
row_vec2.push_back(img_vec2[i*10+j]);
}
Mat row_img1, row_img2;
vconcat(row_vec1, row_img1);
vconcat(row_vec2, row_img2);
img_vec1_v.push_back(row_img1);
img_vec2_v.push_back(row_img2);
}
// 竖着拼接两个vector中的大图像
Mat img1_v, img2_v;
vconcat(img_vec1_v, img1_v);
vconcat(img_vec2_v, img2_v);
// 水平拼接两个大图像
Mat img;
hconcat(img1_v, img2_v, img);
// 显示结果
namedWindow("result", WINDOW_NORMAL);
imshow("result", img);
waitKey(0);
return 0;
}
```