2012-12-19 140 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