OpenCV的IplImage转bmp

本文介绍了如何使用C++将OpenCV的IplImage转换为BMP格式,通过创建位图文件头、信息段、调色板,并处理数据存储顺序,实现了在内存中将灰度图IplImage转为BMP文件的过程。
摘要由CSDN通过智能技术生成


最近做项目,需要VB.NET调用,C++处理的图片。

如果c++处理的结果保存在磁盘上,然后Vb再读取的话,感觉过于占用磁盘IO,不绿色不环保。

因此想用内存映射文件的方式,进程之间传输图片。VB端先创建内存映射文件,然后调用C++程序,C++程序把处理的结果写入内存映射文件,VB端再对内存映射文件进行读取。

http://blog.csdn.net/u013162930/article/details/47606875

进程之间传输图片,就会遇到一个问题,就是需要把图片以一种VB和C++都能认识的方式进行传递。

我就想把OpenCV的IplImage转成bmp,再以byte的形式传递给VB.NET端,vb再解析读取图片。

那么如何才能把IplImage转为bmp呢~


bmp文件由四部分组成:位图文件头,位图信息段,调色板,位图数据。

把这四个部分拼接到一起,就是一个完整的bmp文件了。

我想处理的图像是灰度图,也就是256色的bmp。灰度图的调色板大小为1024字节,内容是R=G=B分别从0到255,而rgbReserved一直为0.

testBitmap是要转为bmp的iplImage图片。为全局变量。

  1. FILE    *fpw;  
  2. //变量定义    
  3. BITMAPFILEHEADER strHead;  
  4. BITMAPINFOHEADER strInfo;   
  5. //初始化头文件。用0来填充内存区域  
  6. SecureZeroMemory(&strHead, sizeof(strHead));    
  7. SecureZeroMemory(&strInfo, sizeof(strInfo));  
  8. //初始化灰度图调色板  
  9. RGBQUAD *strPla = (RGBQUAD *)malloc(256*sizeof(RGBQUAD));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值