2013-05-26 149 views
-2

如果有人請告訴我這行C++代碼是什麼意思,它會幹什麼?這個C++代碼是什麼意思

temp = ((uchar*) matimg.data + i)[j]; 
中的代碼

int rows =(int) height; 
int cols =(int) width; 
Mat matimg(img); 

vector<vector<double> > vec1(rows, vector<double>(cols)); 
int k =1; 
for (int i=0; i < rows; i++) { 
    for (int j =0; j < cols; j++){ 
     unsigned char temp; 
     temp = ((uchar*) matimg.data + i)[j]; 
     vec1[i][j] = (double) temp; 
    } 

} 

P.S.此塊

我不會說C++,我說C#

+4

有沒有你不明白的特定部分?例如。你瞭解乘法,加法和數組索引,還是你需要向你解釋? – Barmar

回答

3

它覆蓋1D matimg.data陣列與若干matimg.step間距的2D矩陣,然後虛擬索引它在(j, k)

+0

「這是覆蓋1D matimg.data數組與matimg.step」這部分的含義是什麼?或者你能告訴我如何在C#中編寫單行代碼? – user2421617

+0

如果數據結構相同,那麼你幾乎可以用完全相同的方式編寫它。只要確保你有一個字節數組。 –

+0

謝謝!我試過了,但是我得到了錯誤,運算符'+'不能應用於'int []'和'int'類型的操作數,沒關係,我會以某種方式解決它。 – user2421617

0

如果有幫助,你也可以重寫這個表達

((uchar*) matimg.data)[ i * matimg.step + j * matimg.elemSize() + k ] 

原來的配方是其在數據訪問意圖清晰,但也許這個提法更清晰的展示你會怎麼做C#重寫。