当我尝试初始化cv::Mat
时
mask = cv::Mat::zeros(20, 1, CV_8U);
或
mask = cv::Mat(20, 1, CV_8U, 1);
我似乎得到了一个正确初始化的垫子。
但是mask = cv::Mat(20, 1, CV_8U, 0);
当我简单地使用 std::cout << mask.size() << std::endl;
或std::cout << mask << std::endl;
时会引发此运行时错误
OpenCV 错误:断言失败 (total(( == 0 || data != NULL( in Mat, file/usr/local/include/opencv2/core/mat.inl.hpp, 行 579在抛出"cv::异常"实例后终止调用 what((:/usr/local/include/opencv2/core/mat.inl.hpp:579: 错误: (-215( total(( == 0 ||data != 函数垫中的空
这很奇怪...知道为什么会发生这种情况吗?
OpenCV有以下两个Mat构造函数:
Mat (int ndims, const int *sizes, int type, const Scalar &s);
Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP);
当您像在中一样构建垫子时
mask = cv::Mat(20, 1, CV_8U, 0);
它使用第二个构造函数。
如果你想调用第一个构造函数,你应该做类似的事情
mask = cv::Mat(20, 1, CV_8U, Scalar(0));