2013-05-26 3 views
-2

누군가이 C++ 코드의 의미가 무엇인지 말해 주시면 감사하겠습니다. 코드이 C++ 코드의 의미는 무엇입니까

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.의 블록

temp = ((uchar*) matimg.data + i)[j]; 

저는 C++을 말하지 않습니다. C#

+4

이해할 수없는 부분이 있습니까? 예 : 곱셈, 덧셈, 배열 인덱싱에 대해 이해하고 있습니까? 아니면 설명이 필요합니까? – Barmar

답변

3

matimg.step의 2 차원 행렬을 1D matimg.data 배열에 겹쳐 놓은 다음 실질적으로 (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#을 다시 작성하십시오.

관련 문제