【发布时间】:2013-06-07 03:56:14
【问题描述】:
下面的代码会导致异常。为什么?
#include <opencv2/core/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void main() {
try {
Mat m1 = Mat(1,1, CV_64F, 0);
m1.at<double>(0,0) = 0;
}
catch(cv::Exception &e) {
cerr << e.what() << endl;
}
}
错误如下:
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in unknown function, file %OPENCV_DIR%\build\include\opencv2\core\mat.hpp, line 537
更新
如果跟踪这段代码,我看到构造函数行调用构造函数
inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
为什么?这个原型有 5 个参数,而我提供了 4 个参数。
【问题讨论】:
-
这是一个例子
cv::Mat depthMap = cv::Mat::zeros(depthMap.rows, depthMap.cols, depthMap.type());
标签: c++ opencv matrix initialization