C++ Mat 读取imagedata内的数据
2016-07-02 16:23
218 查看
应用:将三通道彩色图的Mat数据,转存为单通道灰度图的unsigned char*数据:
Mat ImageMedia; //读取
unsigned char *pGrayImage;//存入
int xsize = ImageMedia.cols;
int ysize = ImageMedia.rows;
pGrayImage = new unsigned char[ xsize * ysize ];
for(int j = 0; j < ysize; j++){
auto ptr = ImageMedia.ptr<uchar>(j);
for(int i = 0; i < xsize; i++) {
pGrayImage[j * xsize + i] = (unsigned char)(
(float)(ptr[0] + ptr[1] + ptr[2])/3.0f);
ptr += 3;
}
}
注意的点:
1、图片数据如果是以uchar存储的,读取的时候一定要用<uchar>
2、ptr的方法是我百度了无数网页看到无数个版本后,第一个成功的。。。
因为IplImage和Mat读取图片数据的问题,踩了一堆堆的坑,无比心累。。。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- C++联合体转换成C#结构的实现方法