-2

如果有人请告诉我这行 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;
    }

}

PS我不会说C++,我会说C#

4

2 回答 2

3

matimg.data它用多个 - 间隔的2D 矩阵覆盖 1D数组matimg.step,然后在(j, k).

于 2013-05-26T05:05:48.670 回答
0

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

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

原始公式在数据访问中的意图更清晰,但也许这个公式更清楚地展示了您将如何进行 C# 重写。

于 2013-05-26T06:04:10.193 回答