opencv Mat 初始化,运行时错误为零

opencv Mat initialization with zero runtime error

本文关键字:运行时错误 Mat 初始化 opencv      更新时间:2023-10-16

当我尝试初始化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));