2013-05-26 61 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#重写。