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

时间:2019-04-06 22:37:17

标签: c++ opencv

当我尝试用{p>初始化data XFlip b a = Y a b -- Use me for instance decalarations type X a b = XFlip b a -- Use me for everything else instance Functor XFlip where ...

cv::Mat

mask = cv::Mat::zeros(20, 1, CV_8U);

我似乎得到了正确初始化的Mat。 但是

mask = cv::Mat(20, 1, CV_8U, 1);

当我仅使用mask = cv::Mat(20, 1, CV_8U, 0); std::cout << mask.size() << std::endl;时抛出此运行时错误

OpenCV错误:Mat,文件/usr/local/include/opencv2/core/mat.inl.hpp,行579中的断言失败(total()== 0 ||数据!= NULL) 抛出'cv :: Exception'实例后终止调用   what():/ usr / local / include / opencv2 / core / mat.inl.hpp:579:错误:(-215)total()== 0 || Mat中的数据!= NULL

这很奇怪...知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

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);

按如下方式构造Mat时

mask = cv::Mat(20, 1, CV_8U, 0);

它使用第二个构造函数。

如果要调用第一个构造函数,则应执行类似的操作

mask = cv::Mat(20, 1, CV_8U, Scalar(0));