Почему бы не использовать 3D-матрицу?
Класс Mat можно превратить в куб с помощью такого использования:
// create a 100x100x100 32-bit array
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_32F, Scalar::all(0));
Или, если вам нужнокомпактные качества «зубчатой» трехмерной матрицы, вы можете взглянуть на класс SparseMat .
Кроме того, если вы делаете это во время выполнения, вы можете сделать что-то вроде:
int sz[3]
int dimSize[3];
// fill in your dynamic dimensions here...
for(int i = 0; i < 3; i++)
{
sz[i] = dimSize[i];
}
Mat* threeD = new Mat(3, sz, CV_32F, Scalar::all(0));