私は次のコードを書きました:
int _tmain(int argc, _TCHAR* argv[])
{
int vals[]={1,2,3,4,5,6,7,8,9};
CvMat mat = cvMat(3,3,CV_8UC1,vals);
for(int i=0;i<mat.rows;i++)
{
int* ptr = (int*) (mat.data.ptr + i* mat.step);
for(int j=0;j<mat.cols;j++)
{
printf("%d\t",*ptr++);
}
printf("\n");
}
return 0;
}
私が得た出力は次のとおりです。
1 2 3
512 768 1024
196608 262144 327680
マトリックスが正しく初期化されていません。ポインタptr
は各行の先頭を指し、それをインクリメントすると、対応する列の要素が得られます。私の仮定は正しいですか?使用したcvMatコンストラクターや要素のアクセス方法に間違いはありませんか?