与this question类似,我的程序有一个指针结构来存储2D图像数组,如下所示
Mat*** scaleSpace;
scaleSpace = new Mat**[numOctaves];
scaleSpace[i] = new Mat*[numIntervals];
scaleSpace[i][j] = new Mat_<float>(width, height);
Mat* middle = scaleSpace[i][j];
float currentPixel = middle->at<float>(yi, xi);
openCV在从上面运行最后一个代码行时触发此断言。
CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
(unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels()) &&
CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
我发现问题是最后一个表达式。所有其他人都是true
。
CV_ELEM_SIZE1(DataType<_Tp>::depth)
是4
elemSize1()
是1
这两个值是什么?如何更改程序以使两者具有相同的值?我只使用一个通道使用浮动图像是一个问题吗?写这个图像非常有效。
imwrite(filename, *middle);