我有一个双数组。我想把它们存放在Mat中。这就是我的做法。
double g2f1_[] = { 0.001933, 0.118119, 0.338927, -0.921300, 0.338927, 0.118119, 0.001933};
g2f1y=Mat(7,1,CV_32F,&g2f1_);
for(int i=0;i<7;i++){
for(int j=0;j<1;j++){
cout<<g2f1y.at<float>(i,j)<<" ";
}
cout<<endl;
}
但是当我提到这些值时,我会得到以下结果,这与我存储的结果完全不同。另外,我一次又一次地运行它会得到不同的价值。
输出:
8.65736e+31
0
3.61609e+31
0
0
0
1.02322e+15
我已经浏览了以下链接
答案 0 :(得分:3)
我们需要在创建Mat时修改以指定用于存储float数组的CV_32F类型,或用于double数组的CV_64F。 所以这两种解决方案都与我合作:
float g2f1_[] = { 0.001933, 0.118119, 0.338927, -0.921300, 0.338927, 0.118119, 0.001933};
Mat g2f1y=Mat(7,1,CV_32F,&g2f1_);
for(int i=0;i<7;i++){
for(int j=0;j<1;j++){
cout<<g2f1y.at<float>(i,j)<<" ";
}
cout<<endl;
}
或者
double g2f1_[] = { 0.001933, 0.118119, 0.338927, -0.921300, 0.338927, 0.118119, 0.001933};
Mat g2f1y=Mat(7,1,CV_64F,&g2f1_);
for(int i=0;i<7;i++){
for(int j=0;j<1;j++){
cout<<g2f1y.at<double>(i,j)<<" ";
}
cout<<endl;
}