c++ - 访问 cv::Mat 数据的 OpenCV 错误

标签 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

有什么建议吗?

最佳答案

制作矩阵数据类型CV_16U .

.at访问函数非常细致,需要非常精确的数据类型。一些编译器会忽略这些问题,而其他编译器会及早发现这些问题。

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

关于c++ - 访问 cv::Mat 数据的 OpenCV 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546151/

相关文章:

c++ - 如果派生类还具有基类中不存在的虚函数,则创建的 vptr 数

c++ - SSE2 内在函数 - 找到两个无符号短 vector 的最大值

内存中的python OpenCV jpeg压缩

c++ - Opencv C++ 创建一个 Mat of Mats

java - android 位图和 opencv mat - 相同的代码不同的结果

c++ - 如何访问 3 维矩阵元素?

c++ - 你如何缩放 CBitmap 对象?

c++ - OpenCV从2D像素获取3D坐标

python - 使用 OpenCV + Python 从 Elp H264 读取 H264 流

c++ - 无法在 eclipse helios 中使用静态库创建 cpp 项目