инициализация opencv Mat с нулевой ошибкой времени выполнения - PullRequest
0 голосов
/ 07 апреля 2019

Когда я пытаюсь инициализировать 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) в Mat, файл /usr/local/include/opencv2/core/mat.inl.hpp, строка 579 прекращение вызова после создания экземпляра cv :: Exception Что (): /usr/local/include/opencv2/core/mat.inl.hpp:579: ошибка: (-215) всего () == 0 || data! = NULL в функции Mat

что странно ... Есть идеи, почему это может происходить?

1 Ответ

0 голосов
/ 07 апреля 2019

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...