用于访问cv :: Mat数据的OpenCV错误

时间:2012-11-24 22:12:32

标签: c++ opencv mat

对于我使用允许类型的任何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

有什么建议吗?

2 个答案:

答案 0 :(得分:7)

制作矩阵数据类型CV_16U

.at访问器功能非常细致,需要非常精确的数据类型。有些编译器会忽略这些问题,而其他编译器则会提前发现。

matrix.at<int>(row, col)不是使用CV_16U引用元素,而是引用unsigned short数据类型。因此,可以使用matrix.at<unsigned short>(row, col)访问元素。

答案 1 :(得分:0)

我不认为openCV有一个int数据类型的图像 整数类型通常是CV_16s,即16位短,所以使用