2016-04-27 51 views
1

3维我是新来的OpenCV,我有OpenCV的一个问题,想声明这个矩阵A = zeros (800,600,2) 我做seaerch上opencv.org我发现这个类型声明的我如何声明一个矩阵,在OpenCV中

 int dim2[3] = {800,600,2}; 
    Mat vv(3,dim2, CV_32F, Scalar::all(0)); 

,但是当使用Qt调试它为我的错误与我的for循环等第二行,所以我认为这是的indeces和我的声明的ISSU,这里是我的循环:

for(int i = 0; i < 800 ; i++) 
     { for (int j = 0; j < 600; j++) 
      { 
      vv.at<double>(i,j,0) = - maxy + j * stepy; 
      vv.at<double>(i,j,1) = - maxz + (801 - i) *stepz; 
      } 
     } 
+0

它显示了什么错误? – user463035818

+0

当与Qt调试它显示我“分段错误”,并指向第二行这个循环 – ner

回答

1

你代码有一个错误。

Mat vv(3,dim2, CV_32F, Scalar::all(0)); 

这将创建一个float类型的矩阵,在这里

vv.at<double>(i,j,0) = - maxy + j * stepy; 
vv.at<double>(i,j,1) = - maxz + (801 - i) *stepz; 

你怎么称呼它,如果它是一个双矩阵

要么你改变32F64F或改变doublefloat

+0

谢谢我有其他错误,但至少它适用于此循环 – ner