3

对于我与允许类型一起使用的任何 Mat 类型,当我尝试进行一些赋值或写入流等时,我会收到如下错误。它发生在 MSVC++ 2010 express 编译器上,它不会发生在 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

有什么建议么?

4

2 回答 2

7

Make the matrix data type CV_16U.

The .at accessor functions are very meticulous, requiring very exact data types. Some compilers ignore these issues, while others catch it early.

Rather than referencing the elements with matrix.at<int>(row, col), CV_16U makes reference to the unsigned short data type. Therefore, the elements can be accessed with matrix.at<unsigned short>(row, col).

于 2012-11-24T22:15:33.453 回答
0

我不相信 openCV 有一个 int 数据类型的图像。
整数类型一般为CV_16s,即短16bit,所以使用

于 2012-11-25T00:01:48.003 回答