0. C++基础类型介绍

名称 字节长度 取值范围
bool 1 false, true
char 1 -128 ~ 127
signed char 1 -128 ~ 127
unsigned char 1 0 ~ 255
short(signed short) 2 -215 ~ 215- 1
unsigned short 2 0 ~ 216- 1
int(signed int) 4 -231 ~ 231- 1
unsigned int 4 0 ~ 232 - 1
long(signed long) 4 -231 ~ 231 - 1
long long 8 -263 ~ 263 - 1
unsigned long 4 0 ~ 232 - 1
float 4 -3.4 * 10-38 ~ 3.4 * 1038
double 8 -1.79 * 10-308 ~ 1.7 * 10308

C++的主要数据类型,主要分为三类,布尔型、整型(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码)、浮点型。而*_t是typedef定义的表示标志,是结构的一种标注。即我们所看到的uint8_t、uint16_t、uint32_t都不是新的数据类型,而是通过typedef给类型起的别名。很明显的可以看出:uint8_t是用一个字节表示的;uint16_t是用两个字节表示的;uint32_t是用4个字节表示的。比如:

typedef signed char              int8_t;
typedef short int               int16_t;
typedef int                     int32_t;typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
typedef unsigned int            uint32_t;

1.图像数据类型uint8_t

从上面可以得知,uint8_t的定义是unsigned char,数据范围在0~255之间,非常适合于存放图像数据。比如我们通过opencv读取一幅灰度影像,可以用一个uint8数组来保存灰度影像每个像素的灰度值。

cv::Mat img = cv::imread(path, cv::IMREAD_GRAYSCALE);
const int32_t width = static_cast<uint32_t>(img.cols);
const int32_t height = static_cast<uint32_t>(img.rows);uint8_t bytes = new uint8_t[width * height];for(int i = 0; i < height; i++){for(int j = 0; j < width; j++){bytes[i * width + j] = img.at<uint8_t>(i,j);}
}

当我们想输出uint8_t整型值来看时,总是会得不到我们想看到的整形值。这是因为<<操作符有一个重载版本是ostream & operator <<(ostream&, unsigned char),它会将unsigned char类型的参数经过ASCII码值转换输出对应的字符,要是想输出整形值而非字符,其实也很简单,在输出的时候将uint8_t转换成unsigned int类型就可以了,可以用下面的输出语句:

std::cout << unsigned(a) << std::endl;
//或者
std::cout << +a << std::endl;
std::cout << a+0 << std::endl;

至于类型的转换,等遇到实际问题时再来作补充

uint8_t图像数据类型介绍相关推荐

  1. python 图像数据类型及颜色空间转换

    一.图像数据类型及转换 在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换.这些数据类型及取值范围如下表所示: Data type Range uin ...

  2. Redis 数据类型介绍

    Redis 数据类型介绍 你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.也就是说,你不必仅仅把字符串当作键所指向的值.下列这些数据类型都可 ...

  3. openresty开发系列13--lua基础语法2常用数据类型介绍

    openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔) 布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假" ...

  4. camvid数据集介绍_深度学习图像数据集介绍(MSCOCO)

    深度学习图像数据集介绍(MSCOCO) MSCOCO数据集是微软开发维护的大型图像数据集,次数聚集的任务包括识别(recognition),分割(segementation),及检测(detectio ...

  5. redis种类型对应java类型_Redis的五种基本数据类型介绍

    Redis作为缓存具有极其丰富的功能,比如计数器.好友关系以及排行榜等等.而Redis之所能够实现如此强大的功能,完全是依赖着它的基本数据结构.今天我们来看看Redis的五种基本的数据结构,分别是字符 ...

  6. mysql数据库邮箱什么类型_MySQL的数据类型介绍

    MySQL的数据类型介绍 发布时间:2020-06-01 20:57:09 来源:亿速云 阅读:154 作者:鸽子 由于Mysql独有的特性和实现细节对性能的影响是很明显的,因为做好Mysql数据库的 ...

  7. python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...

    一.图像数据类型及转换 在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换.这些数据类型及取值范围如下表所示: Data typeRange uint ...

  8. Redis五种数据类型介绍

    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...

  9. python读取数据库数据类型_从SQL数据库读取二进制数据(图像数据类型)并将其膨胀,Matlab vs.Python...

    完全编辑: 我迫切需要使用Python访问microsoftsqlserver并从中读取压缩数据.在经历了很多麻烦之后,我终于找到了一个可以工作的Matlab实现,它可以完成这个任务.不过,我需要用P ...

最新文章

  1. AM335X can驱动移植
  2. 技术团队,你欠了一屁股债你造吗?
  3. 3. CMake 系列 - 分模块编译安装项目
  4. Java排序之直接选择排序
  5. 疑似小米10系列真机谍照首曝光:挖孔双曲面屏设计无疑
  6. Shiro的多Realm验证的实现--shiro实现不同身份使用不同Realm进行验证
  7. Java——深入理解Java异常体系
  8. ObjC学习7-C语言特性
  9. 《使命召唤7:黑色行动》有什么简单办法进入僵尸模式
  10. Centos中如何配置Texlive2013中文字体的问题
  11. python将pdf文件转换成word文档_python实现pdf转word文档
  12. linux镜像迅雷下载,【转】红帽 Red Hat Linux相关产品iso镜像下载【迅雷快传】【百度云】【更新7.1】...
  13. vue 实现图片预览
  14. ECShop 批量打印快递单
  15. android切图规范,APP切图详细规范终极指南
  16. 被 onnx.checker.check_model 检查出的常见错误
  17. rt-thread驱动篇(07)---STM32F429单片机SD卡驱动添加
  18. 只有一小部分情节的小说——离觞
  19. ads1115多片并联
  20. 日语动词+动词类型+动词活用

热门文章

  1. 《12个工作的基本》读书分享
  2. matlab对xml文件操作,Matlab读写xml文件
  3. centos7安装es mysql_centos7.2安装Mysql5.7.13
  4. OpenGL3D图形、旋转、纹理、键盘移动、光照、滤波、透明(完整)
  5. 8x能不能升级鸿蒙,华为没有忘记老用户,畅享系列升级鸿蒙OS,荣耀8X在列
  6. service层调用service层的方法,并切换数据库调用不同数据库获取数据
  7. 开源新作!抖音四面被拒,再战头条终获offer,一文搞懂
  8. js中的entries方法的使用
  9. iOS CoreData的使用
  10. PrimeNG之DataTable