【问题标题】:opencv Mat initialization with zero runtime error零运行时错误的opencv Mat初始化
【发布时间】:2019-08-28 11:02:50
【问题描述】:

当我尝试用

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

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

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

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

当我简单地使用 std::cout << mask.size() << std::endl;std::cout << mask << std::endl; 时会引发此运行时错误

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

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

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2022-11-02
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      相关资源
      最近更新 更多