三维数组在c++与openCV



我想做三维数组,但是我的数组太大了,像[92][112][200]。我有其他方法做3D数组来保持我的值吗?或者我不知道我是否做错了什么。当我更改维度[50][50][50]的大小时,没有出现这样的错误。

my array

大小s = imageX.size ();

int h = s;

font =宋体;

双ThreeD [w] [h][功能]

和我的第二个问题是:当我写w或h到我的数组维度我有错误:表达式必须有一个常量值我不能这样写维度的大小?

你不能(不应该)声明一个像3D这样的非常量大小的数组。这个数组在堆上分配。相反,应该使用operator new来分配它。或者,您可以在OpenCV中使用通道数作为第三维度创建3D矩阵。但请记住,维数在cv::Mat中是有限的(如果我没记错的话,CV_MAX_CN =512)。下面是如何做到这一点(创建一个类型为float的矩阵,填充零):

cv::Mat m = cv::Mat::zeros(imageX.size(), CV_32FC(feature));

[edit]:这里的答案只是为了完整。请使用@remi的解决方案。

可以在opencv中使用多维Mat:

int dims[3] = {92,112,200};
Mat m(3,dims,CV_32F);
cerr << m.size[0] << endl; 
// note, you have to use the size *member*, not the function now,
// also, rows and cols will be invalid(-1)

但实际上,让你的生活更轻松,a和使用vector<Mat>:

vector<Mat> md(92,Mat(112,200,CV_32F));
                            

相关内容

  • 没有找到相关文章

最新更新