Geo*_*rge 2 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);
Run Code Online (Sandbox Code Playgroud)
输出:
120
Run Code Online (Sandbox Code Playgroud)
在定义矩阵CV_8UC1时定义每个元素必须是8位.这意味着您只能存储0到255之间的值.如果要使用大数字,则应将矩阵定义为CV_32UC1for unsigned integers或CV_32SC1for signed integers.您还应该存储一个值int而不char是以适当的方式读取它.
更正确的代码是
Mat matrix(6,10,CV_32SC1);
matrix.at<int>(0,0) = 2942584;
cout << (int)matrix.at<int>(0,0);
Run Code Online (Sandbox Code Playgroud)
还有一件事:矩阵元素的格式如下
CV_<NUMBER_OF_BITS><SIGNED/UNSIGNED>C<NUMBER_OF_CHANNELS>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |