【问题标题】:How to store values from an array to a Mat in OpenCV如何在 OpenCV 中将值从数组存储到 Mat
【发布时间】:2014-08-25 07:49:28
【问题描述】:

我有一个双精度数组。我想将它们存储在 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  

我已经浏览了以下链接

initialize an OpenCV Mat with an 2D array

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    我们需要在创建 Mat 时修改指定类型 CV_32F 用于存储浮点数组,或 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;
        }
    

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2016-10-22
      • 1970-01-01
      相关资源
      最近更新 更多