最近在做VB.Net和C++进程间用内存映射文件通信的项目。
VB.NET和C++之间的通信就需要传送统一的文件格式,让VB和C++都能解析。
就会遇到这样地问题:VB.NET中Emgu的Image(Of Gray,Byte)怎么才能转为C++中OpenCV的IplImage格式呢?
进程间通信,我用的是内存映射文件的方式,在本文中就不多做讨论了。主要讨论两种格式之间的转换。
首先VB端创建内存映射文件,把Image(Of Gray,Byte).MIplImage.imageDataOrigin指针指向的内存写入内存映射文件中
因为本文的研究对象都是灰度图,所以MIplImage.imageDataOrigin中存放的都是0-255的灰度值。方向是以左上角为起点,横向扫描。
- 'imgbytes是Byte()类型的图片文件
- Dim img As Image(Of Gray, Byte) = New Image(Of Gray, Byte)(Image.FromStream(New MemoryStream(imgbytes)))
- '图片的宽度