c - 如何在 OpenCV 中访问 3d 矩阵的切片

标签 c opencv matrix

我想将 592 个 47x47 数组存储到一个 47x47x592 矩阵中。我按如下方式创建了 3d 矩阵:

int sizes[] = {47,47,592};
Mat 3dmat(3, sizes, CV_32FC1);

然后我想我可以通过使用一组范围来访问它,如下所示。

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);

但是,当我尝试使用 copyTo 函数输入现有数据集时,它不起作用。

data.copyTo(2dmat); //data is my 47x47 matrix

当我这样做时,3d 矩阵不会更新。

如有任何信息,我们将不胜感激!谢谢!

编辑:我将 592 个矩阵存储在此 3d 矩阵中,以便稍后可以在另一个循环中访问每个单独的 47x47 矩阵。所以我稍后会做这样的事情:

2dmat = 3dmat(ranges);
2dmat.copyTo(data);

然后我会使用这个数据矩阵执行一些操作。在循环的下一次迭代中,我将使用下一个存储的数据矩阵。

最佳答案

另一种基于 vector 的解决方案:

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);
}

关于c - 如何在 OpenCV 中访问 3d 矩阵的切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998422/

相关文章:

c - 具有相同参数的相同函数会产生不同的结果

c++ - 训练人脸识别器需要很多时间

c++ - Create Mat from Vector<point2f>断言失败错误

matlab - 在 MATLAB 中获取矩阵列最大值的索引

r - cor() 函数的完整.obs

python - 非方阵中的对角线 - python

c - shell脚本 "Thread: command not found"

c - 有没有办法在不等待换行的情况下尽快获取文本?

计算每个单词在给定句子中出现的次数

python - 给视频捕获增加X延迟