这个C ++代码的含义是什么?

时间:2013-05-26 05:00:48

标签: 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#

2 个答案:

答案 0 :(得分:3)

它将1D matimg.data数组与多个matimg.step间隔的2D矩阵重叠,然后在(j, k)虚拟索引它。

答案 1 :(得分:0)

如果有帮助,您也可以将此表达式重写为

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

原始表述在数据访问方面的意图更清晰,但是这个表述可能更清楚地展示了你如何进行C#重写。