我想将592个47x47阵列存储到47x47x592矩阵中。我创建了3d矩阵,如下所示:
int sizes[] = {47,47,592};
Mat 3dmat(3, sizes, CV_32FC1);
Run Code Online (Sandbox Code Playgroud)
然后,我以为可以使用如下所示的一组范围来访问它。
Range ranges[3];
ranges[0] = Range::all();
ranges[1] = Range::all();
ranges[2] = Range(x,x+1) //within a for loop.
Mat 2dmat = 3dmat(ranges);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用copyTo函数输入现有数据集时,它不起作用。
data.copyTo(2dmat); //data is my 47x47 matrix
Run Code Online (Sandbox Code Playgroud)
当我这样做时,3d矩阵不会更新。
任何信息表示赞赏!谢谢!
编辑:我将592个矩阵存储在此3d矩阵中,以便以后可以在另一个循环中访问各个47x47矩阵。所以我以后会做这样的事情:
2dmat = 3dmat(ranges);
2dmat.copyTo(data);
Run Code Online (Sandbox Code Playgroud)
因此,我将使用此数据矩阵执行一些操作。在循环的下一个迭代中,我将使用下一个存储的数据矩阵。
另一种基于矢量的解决方案:
std::vector<cv::Mat> mat(592, cv::Mat(47, 47, CV_32FC1)); // allocates 592 matrices sized 47 by 47
for(auto &m: mat) {
// do your processsing here
data.copyTo(m);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3439 次 |
| 最近记录: |