cv ::大整数的mat

时间:2012-08-26 18:44:33

标签: c++ opencv integer 8-bit

我正在努力将大整数(例如2942584)放入cv Mat中。接受它的唯一类型是CV_8UC1,但它将值从2942584更改为120(显然是8位)。

但是无论如何在cv Mat中有原始值?

如果有帮助,这是简单的代码:

Mat matrix(6,10,CV_8UC1);
matrix.at<char>(0,0) = 2942584;
cout << (int)matrix.at<char>(0,0);

输出:

120

1 个答案:

答案 0 :(得分:6)

当您将矩阵定义为CV_8UC1时,您定义每个元素必须为8位。这意味着您只能存储0到255之间的值。如果要使用大数字,则应将CV_32UC1的矩阵定义为unsigned integersCV_32SC1的矩阵定义为signed integers。另外,您应该将值存储为int而不是char,并以适当的方式读取它。

更正确的代码是

Mat matrix(6,10,CV_32SC1); 
matrix.at<int>(0,0) = 2942584;
cout << (int)matrix.at<int>(0,0);

还有一件事:矩阵元素的格式如下

CV_<NUMBER_OF_BITS><SIGNED/UNSIGNED>C<NUMBER_OF_CHANNELS>