C++ c++;按列初始化opencv 3D Mat

C++ c++;按列初始化opencv 3D Mat,c++,opencv,mat,C++,Opencv,Mat,我正在阅读与opencv相关的问题来研究这个主题,突然发现了这个奇怪的问题: chappjc(第一个答案)如何使用单个循环填充Mat非常有趣。由于我经常将opencv与matlab结合使用,我想知道是否有一种方法可以在不使用通常的三重嵌套循环的情况下按列初始化矩阵: for (unsigned int k = 0; k < space[0]; k++) for (unsigned int i = 0; i < space[1]; i++) f

我正在阅读与opencv相关的问题来研究这个主题,突然发现了这个奇怪的问题:

chappjc(第一个答案)如何使用单个循环填充Mat非常有趣。由于我经常将opencv与matlab结合使用,我想知道是否有一种方法可以在不使用通常的三重嵌套循环的情况下按列初始化矩阵:

for (unsigned int k = 0; k < space[0]; k++)
        for (unsigned int i = 0; i < space[1]; i++)
            for (unsigned int j = 0; j < space[2]; j++)
                res_square.at<u_char>(i, j, k) = res_flat_vx[ (space[1]*space[2])*k + space[1]*j + i ];

有可能吗?

正常的行主要初始化,然后转置?是的,我已经考虑过了,但是与嵌套循环初始化相比,我认为它的性能会差一些。什么是“通常的三重嵌套循环”?
Mat:
        [ 1, 6, 11, 16, 21;
          2, 7, 12, 17, 22;
          3, 8, 13, 18, 23;
          4, 9, 14, 19, 24;
          5,10, 15, 20, 25 ]