如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
来源:互联网 发布:云警报警主机编程 编辑:程序博客网 时间:2024/05/22 22:08
如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
环境:vs2008 + opencv2.4.6
根据待封装图像数据的宽度,封装方法有两种。
下面以封装单通道、8位灰度BMP图像为例进行说明,其中读BMP图像程序是自己开发的。
第一种情况:图像宽度满足4的倍数,即满足BMP格式宽度要求。
RdWtIm rdWtIm;int width = 0;int height = 0;int lineByte = 0;BYTE* imData = rdWtIm.Read8bitbmp("lena.bmp", &width, &height);lineByte = (width + 3)/4*4; //格式宽度printf("width = %d\n", width);printf("height = %d\n", height);printf("lineByte = %d\n", lineByte);Mat iMat(height, width, CV_8UC1, imData, lineByte);namedWindow("lena");imshow("lena", iMat);
其中,imData的尺寸是width*height,因我的Read8bitbmp读取的是有效数据;此时,width == lineByte.
第二种情况:图像宽度不满足BMP格式宽度时
RdWtIm rdWtIm;int width = 0;int height = 0;int lineByte = 0;BYTE* imData = rdWtIm.Read8bitbmp("lena.bmp", &width, &height);lineByte = (width + 3)/4*4; //格式宽度printf("width = %d\n", width);printf("height = %d\n", height);printf("lineByte = %d\n", lineByte);Mat iMat(height, width, CV_8UC1, imData, width);namedWindow("lena");imshow("lena", iMat);
其中,imData的尺寸是width*height,因我的Read8bitbmp读取的是有效数据;此时,width<lineByte.
2.结果
注意:
1.上述程序只是为了验证如何将相机传输来的内存数据封装成Mat,以便利用opencv来进行图像处理或计算机视觉开发;
2.如果数据已经保存为图像文件,完全可以使用opencv自带的读图像函数imread。
3.如果利用c/c++自己开发读bmp图像,可以考虑返回的即是格式宽度的图像数据,这样封装的时候一直使用lineByte就可以。
4.可以参考我读写BMP图像程序。
http://blog.csdn.net/lyc_daniel/article/details/9193793
0 0
- 如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
- 如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
- 如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
- 将图像BYTE(unsigned char)数组转换为VARIANT类型
- 如何将CString类型转换成unsigned char *类型
- unsigned char* pImgData转换成Opencv Mat格式
- OpenCV中CvMat或Mat的类型
- c语言byte类型 typedef unsigned char byte[20]如何初始化
- CString或const char数组转byte数组(unsigned char数组)
- C++中 unsigned char != byte
- 图像处理中像素点的问题:double、long、unsigned、int、char类型数据所占字节数
- Opencv中如何将两幅图像连接成一幅图像(Mat操作)
- C++中如何将string类型转化成char类型
- 怎么样将unsigned char类型变量存入文件(如TXT文件),在从文件中读入,要求保持原来unsigned char
- opencv中遍历图像(Mat格式)
- opencv中Mat类型操作或转换代码分析
- unsigned char BYTE
- 如何将内存图像数据封装成QImage V1
- 四柱汉诺塔
- 自定义Dialog
- 第十二周实践立方累加和
- Sftp的命令问题
- 大数据风控具体是怎样的?
- 如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
- aliyun阿里云 Maven仓库地址
- Python 安装mysql错误的一种解决办法
- console里旋转的寿司
- app点击icon重启问题
- led
- Android群英传——第九章使用PackageManager获取应用包信息
- SLua在Unity5.4发布Android时报错
- 最长公共子序列