如何存储多个RGB图像在一个数组在c++ /OpenCv

How to store multiple RGB Images in one array in C++/OpenCv

本文关键字:一个 c++ OpenCv 数组 RGB 何存储 存储 图像      更新时间:2023-10-16

假设我有10张RGB图片。如何将所有图像存储在单个数组中。

如果我们有一个RGB图像那么我们可以设置

  Mat img = imread("test.jpg",CV_LOAD_IMAGE_UNCHANGED);
  Mat arr = Mat zeros(row, col, CV_32FC1);
  arr  = img.clone();

这样我们可以读取图像。但是我想读10个图像说,并希望存储在相同的"arr"。有可能做到吗?如果有,怎么做?

如果您希望按照Dobi指示将10张图像存储到单个数组中,您可以使用std::vector<cv::Mat>

std::vector<cv::Mat> Vec();

然后

Vec.push_back(img);

cv::Mat允许您像std::vector一样进行push_back操作,因此您可以简单地执行以下操作:

   //read a few images
   cv::Mat img1 = imread("test1.jpg",CV_LOAD_IMAGE_UNCHANGED);
   cv::Mat img2= imread("test2.jpg",CV_LOAD_IMAGE_UNCHANGED);
   //make sure same size
   CV_Assert(img2.size() == img1.size()); 
   //combine into a new image
   cv::Mat im1im2; 
   im1im2.push_back(img1);
   im1im2.push_back(img2);

当然你也可以在循环中这样做。

欢呼