我是OpenCV的新手,我正在尝试创建n维数组并使用CvMatND访问每个元素。
我可以通过data [i * step + j * nchannels + 0]访问2D矩阵,如何访问由以下元素创建的矩阵的元素:
int size[] = { 12, 12, 12 };
CvMatND* matB = cvCreateMatND(3, size, CV_8U);
int *Data = matA->data.i;
谢谢
最佳答案
我已经审查并测试了我以前的答案,如您所知,它是不准确的。
这是迭代3D数组所有元素的工作代码。
int size[] = { 5, 5, 5 };
CvMatND* matA = cvCreateMatND(3, size, CV_32F);
cvSetZero(matA);
for (int x = 0; x < matA->dim[0].size; x++)
{
for (int y = 0; y < matA->dim[1].size; y++)
{
for (int z = 0; z < matA->dim[2].size; z++)
{
unsigned char* ptr = matA->data.ptr + ((size_t)x * matA->dim[0].step) + ((size_t)y * matA->dim[1].step) + ((size_t)z * matA->dim[2].step);
float value = *(float*)ptr;
printf("x:%d y:%d z:%d --> %f\n", x, y, z, value);
}
}
}