BMP文件RGB颜色数据存放方式
2017-06-11 00:00
351 查看
用Window画图工具绘画一张纯色图片: 颜色代码: RGB = 0xED1C24 ( R=236, G = 28, B = 36)
用Binary Viewer 工具查看图像二进制数据:
深色部分为文件头部分,包含文件大小,像素位数等信息
深色部分为像素数据,已知 图像数据 R=ED, G = 1C, B = 24
可以看出数据在内存中的实际存储格式是按照 BGR 的格式存放
为了便于处理, OpenCV的 Mat数据结构也是按照 BGR的方式存储数据:
创建一个500 * 1000 的图像数据信息,然后转换为 OpenCV 的 Mat 对象,在用 imshow 函数显示图像:
Reference: http://blog.csdn.net/sjzlxd/article/details/3923907
用Binary Viewer 工具查看图像二进制数据:
深色部分为文件头部分,包含文件大小,像素位数等信息
深色部分为像素数据,已知 图像数据 R=ED, G = 1C, B = 24
可以看出数据在内存中的实际存储格式是按照 BGR 的格式存放
为了便于处理, OpenCV的 Mat数据结构也是按照 BGR的方式存储数据:
unsigned char *pData = new unsigned char[3 * 500 * 1000]; for (int i = 0; i < 500; i++) { for (int j = 0; j < 1000 * 3; j+=3) { int offset = i * 1000 * 3 + j; pData[offset + 0] = 0x24; //Blue pData[offset + 1] = 0x1c; //Green pData[offset + 2] = 0xed; //Red } }
创建一个500 * 1000 的图像数据信息,然后转换为 OpenCV 的 Mat 对象,在用 imshow 函数显示图像:
static Mat ConvertToMat(unsigned char *data, int rows, int cols) { Mat img(rows, cols, CV_8UC3); // create a new matrix for (int i = 0; i < rows * cols * 3; i++) { img.data[i] = data[i]; } return img; } void ShowImage(unsigned char *data, int rows, int cols) { Mat img = ConvertToMat(data, rows, cols); imshow("Bitmap", img); waitKey(); }
Reference: http://blog.csdn.net/sjzlxd/article/details/3923907
相关文章推荐
- 将RGB数据写入BMP位图文件
- mfc把rgb图像数据存为bmp文件
- unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,
- RGB裸数据生成bmp文件的demo
- windows 保存rgb数据为bmp文件
- RGB数据写bmp图片文件遇到的这些坑
- 将RGB数据写入BMP位图文件
- 将Table数据导出至Excel文件(中国移动实现的方式)
- 将Table数据导出至Excel文件(中国移动实现的方式)
- BMP图像文件TO数据区的互换
- bmp提取rgb888转换成yuv格式中的yv12再从yv12转换为rgb888写成bmp格式文件的工程,测试通过
- Microsoft Jet 数据库引擎打不开文件'(未知的)'。 它已经被别的用户以独占方式打开,或没有查看数据的权限
- 将Table数据导出至Excel文件(中国移动实现的方式)
- 颜色空间表示方式YUV,RGB
- 采用offline的方式更改数据文件位置
- 将Table数据导出至Excel文件(中国移动实现的方式)
- hw1: 理解文件系统方式下的数据管理
- 强类型的数据集,在处理以直接附加方式的SQLServer的MDF文件时无法更新数据-原因分析
- Mapx 属性数据文件用oledb方式访问的问题
- MySQL的数据文件一般存放在什么位置?