想要创建高维数组,主要利用Mat的 Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0);这一成员函数。
假设要创建四维数组,具体事例如下:
int p = 1;
int q = 2;
int t = 3;
int u = 4;
int sizes[] = {p,q,t,u };
int all = p*q*t*u;
float *d1 = new float[all];
for(int i = 0; i < all; i++)
{
d1[i] = i * 1.0f;
}
Mat a = Mat(4, sizes, CV_32S, d1);
四维数据的访问为:
int n, c, h, w, id;
for (n = 0; n<p;n++)
{
for (c=0;c<q;c++)
{
for (h=0; h<t; h++)
{
for (w=0; w<u; w++)
{
id = a.step[0] * n + a.step[1] * c + a.step[2] * h + w * a.step[3];
//cout << id << endl;
float *p = (float*)(a.data + id);
cout << *p << endl;
}
}
}
}
输出结果为:
特别地,关于step,step1的讲解请参考https://blog.csdn.net/Felaim/article/details/80702787