2013-04-03 45 views
1

我有一个二维双重类型的矩阵。为什么openCV Mat.at与原始矩阵不匹配

双**结果; (8334 * 34大小)

的值是这样的: 0.00211094,0,6.10098e-006 .......

我使用的代码板M =垫(ROW,COL,CV_64F ,结果),

,但是当我检查元素,我发现值不匹配,并且在很奇怪,像5.325e-344(太小m的值!)

COUT <( 0,0)!= result [0] [0]

我测试一个小矩阵,答案匹配矩阵。

double a = 0.00211094; 
double b = 6.10098e-006; 
double c=0; 
double aa[3][3] = {{a, b, c}, {0.4, 0.5, 0.6}, {0.7, 0.8, 0.9}}; 
Mat m = Mat(3, 3, CV_64F, aa); 

cout<<m.at<double>(0,1)<<endl; 

有人能告诉我为什么吗?这是我的C++内存的问题(结果矩阵太大?)?

+0

Mat可能是不连续的,你正在访问内存的填充部分? – alrikai

回答

0

只能将小矩阵设置为Mat。

所以我尝试将每个元素设置为垫子。

for(i...){ 
for(j...){ 
    m.at<double>(i,j) =results[i][j]; 
} 
} 

它的工作原理。

有趣!