Ошибка OpenCV для доступа к данным cv :: Mat

Для любого типа Mat, который я использую с допустимыми типами, я получаю сообщение об ошибке, как показано ниже, когда я пытаюсь выполнить какое-либо присваивание или запись в поток и т. Д. Это происходит в экспресс-компиляторе MSVC ++ 2010, это не происходит с компилятором gnu g ++.

пример некорректного использования:

Mat M = Mat::zeros( image.size(),  DataType<int>::type  );

std::cout << M.at<int>( 0,0 ) << std::endl; // error

// OR

int x = M.at<int>( 0,0 ); // error

две ошибки сработали вместе:

во всплывающем окне

Unhandled exception at <some hex adress> in test.exe:Microsoft C++ exception: cv:xception at memory location <some hex adress>

и в окне консоли

OpenCV Error: Assertion failed ... \mat.hpp, line 537

Какие-либо предложения?

3

Решение

Сделайте тип данных матрицы CV_16U,

.at функции доступа очень дотошны, требуют очень точных типов данных. Некоторые компиляторы игнорируют эти проблемы, в то время как другие ловят это рано.

Вместо того, чтобы ссылаться на элементы с matrix.at<int>(row, col), CV_16U делает ссылку на unsigned short тип данных. Таким образом, элементы могут быть доступны с matrix.at<unsigned short>(row, col),

7

Другие решения

Я не верю, что openCV имеет тип данных int.
Целочисленный тип обычно CV_16s, т.е. 16-битный, поэтому используйте

0

По вопросам рекламы [email protected]