Предположим, что я собираю изображения/матрицы одинакового размера, глубины и канала в файл vector
. Итак, этих изображений r*c*d
каждое, и у меня есть m
из них в моем векторе следующим образом.
vector<string> imgs; --> there are m image paths in these, all are r*c*d resolution
vector<Mat> vec;
for (auto img: imgs ){
vec.push_back(cv::imread(img, COLOR_BGR)); //or gray. doesn't really matter
}
Теперь я хочу создать 4D-матрицу. Например, в python np.array(vec)
дал бы мне это (при условии, что vec
- это список). Я хотел бы то же самое в OpenCV С++, но я не мог найти для этого решения.
Я не хочу создавать 4D-матрицу с Mat m(dims, size, type);
, затем перебирать все пиксели и копировать значение, так как это очень неэффективно. Я хотел бы иметь метод, который будет просто рассматривать vec<Mat>
как 4D Mat
, чтобы он был очень быстрым. Обратите внимание, что у меня может быть 100
изображений с полным разрешением.
Я использую Opencv4.2 и С++ на Mac.
заранее спасибо