Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 大整数矩阵_C++_Opencv_Integer_8 Bit - Fatal编程技术网

C++ 大整数矩阵

C++ 大整数矩阵,c++,opencv,integer,8-bit,C++,Opencv,Integer,8 Bit,我正在努力把大整数,如2942584,放在简历垫上。唯一接受它的类型是CV_8UC1,但它将值从2942584更改为120(显然是8位) 但是在简历中有没有原始的价值呢 以下是简单的代码(如果有帮助): Mat matrix(6,10,CV_8UC1); matrix.at<char>(0,0) = 2942584; cout << (int)matrix.at<char>(0,0); 当您将矩阵定义为CV_8UC1时,您定义每个元素必须为8位。这意味着您只

我正在努力把大整数,如2942584,放在简历垫上。唯一接受它的类型是CV_8UC1,但它将值从2942584更改为120(显然是8位)

但是在简历中有没有原始的价值呢

以下是简单的代码(如果有帮助):

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

当您将矩阵定义为
CV_8UC1
时,您定义每个元素必须为8位。这意味着您只能存储0到255之间的值。如果要使用一个大数字,则应将
无符号整数的矩阵定义为
CV_32UC1
,或
有符号整数的矩阵定义为
CV_32SC1
。您还应该将值存储为
int
而不是
char
,并以适当的方式读取

更正确的代码是

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

好吧,我试过CV_32SC1,但问题确实出在char身上。多谢各位much@George如果在内存中使用不正确的矩阵分配类型,将来会出现内存泄漏问题,这将很难调试。好的,我将确保在将来注意这一点。这些细节非常明显,不幸的是文档中没有太多的内容,我自己也没有弄清楚。再次感谢你的帮助!
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>