C++ 将CV_32FC1更改为CV_64FC1结果数据转换不正确

C++ 将CV_32FC1更改为CV_64FC1结果数据转换不正确,c++,opencv,C++,Opencv,我尝试在OpenCV中使用2D浮点数组初始化Mat对象。我将Mat的数据类型设置为CV_64FC1,然后打印出Mat。打印结果与初始化2D数组不同 void testConversion() { float data[10][2] = { {2.5, 2.4}, {0.5, 0.7}, {2.2, 2.9}, {1.9, 2.2}, {3.1, 3.0}, {2.3, 2.7}, {2, 1.6},

我尝试在OpenCV中使用2D浮点数组初始化Mat对象。我将Mat的数据类型设置为CV_64FC1,然后打印出Mat。打印结果与初始化2D数组不同

void testConversion()
{  float data[10][2] = 
 {
    {2.5,   2.4},
    {0.5,   0.7},
    {2.2,   2.9},
    {1.9,   2.2},
    {3.1,   3.0},
    {2.3,   2.7},
    {2,     1.6},
    {1,     1.1},
    {1.5,   1.6},
    {1.1,   0.9}
 };


  Mat
     mData(10,2,CV_64FC1,&data);
   cout<<"mData\n"<< mData <<endl;

  return;
 }
只有我改变了才行

Mat
 mData(10,2,CV_64FC1,&data);


有人能解释一下原因吗?提前感谢。

问题的原因是数组类型(float)与OpenCV的类型参数CV_64FC1不匹配

参数CV_64FC1确定数据数组应被视为双精度数组,每个值64位

然而,Youir数组有一种浮点类型,每个值有32位。 因此,在这种情况下,使用CV_32FC1是正确的用法

Mat
 mData(10,2,CV_64FC1,&data);
Mat
 mData(10,2,CV_32FC1,&data);