根据这篇 文章和 OpenCV 文档,我可以初始化和访问多维 Mat 的每个元素。
实际上,我首先在 MATLAB 中编码,现在需要转换为 OpenCV。MATLAB 矩阵支持子矩阵访问,例如:a(:,:,3) 或 b(:,:,3:5)
这可以在 OpenCV 中完成吗?据我所知,这可以用 2D Mat 来完成。更多的2D怎么样?
Edit01:此外,对于多维 Mat,属性 cols 和 rows 不足以表征矩阵的 3 种大小。有尺寸大于3的情况。如何存储这些属性?
编辑02:
// create a 100x100x100 8-bit array
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_8U, Scalar::all(0));
我放弃了使用 OpenCV Mat 访问子矩阵的想法。也许,OpenCV 不支持它。但是从这个示例代码中,构造函数接收来自“sz”的第 3 个维度。这个第 3 维传递给 Mat 的哪个属性?可能在这种情况下,rows = 100,cols = 100,其他??= 100 我迷失了 OPenCV 文档
Edit03:从 OpenCV 源跟踪 Mat 类我在 mat.hpp 的 Edit02 中找到了构造函数的定义:
inline Mat::Mat(int _dims, const int* _sz, int _type, const Scalar& _s)
: flags(0), dims(0), rows(0), cols(0), data(0), refcount(0),
datastart(0), dataend(0), datalimit(0), allocator(0), size(&rows)
{
create(_dims, _sz, _type);
*this = _s;
}
下一个问题是这里的“创建”函数在哪里以及如何定义?=> 在 OpenCV 中跟踪这个 Mat 定义可能有助于我在 Mat 矩阵中修改/自定义我自己的特征
PS:如果我的帖子写的太乱了请见谅!!我是一个新手程序员,试图解决我的编程问题。如果我的方法不够好或不够正确,请随时纠正我。谢谢!!