2012-12-19 109 views
7

谁能告诉我如何在OpenCV中将Mat转换为unsigned char*以及数据是否是数组?另外,我想知道如何将vector<vector<double>>改为float*,以使其成为数组的指针?谢谢。垫无符号字符*

+0

您正在使用什么类型的垫?无论如何,请参阅cv :: Mat.data成员 - 它是指向内部Mat存储的指针。 – brotherofken

回答

6

正如已经提到的,你应该使用的cv::Mat一个data成员:

cv::Mat m; 
... 
uchar *data = m.data; 

关于第二个问题: 首先,当你从转换到doublefloat丢失一些数据。并没有现成的解决方案来做到这一点,所以只需使用简单的循环和复制向量到阵列指针:

float* toArray(vector<vector<double> >& arr) 
{ 
    if (arr.empty()) 
    { 
     return NULL; 
    } 
    else 
    { 
     //I assume that each vector (element of arr) has the same size 
     int m = arr.size(); 
     int n = arr[0].size(); 
     float *res = new float[m * n]; 
     int count = 0; 

     for (int i=0; i<m; i++) 
     { 
      for (int j=0; j<n; j++) 
      { 
       res[count++] = (float) arr[i][j]; 
      } 
     } 
     return res; 
    } 
} 
+0

这是你对第二个问题的意思吗? float * kernelarr = nullptr; (int col = 0; col

+1

@AbhishekThakur否,请参阅代码。 – ArtemStorozhuk