在工业控制领域,相机返回给上层的图像信息,一般只会有像素信息,也就是说我们拿到的图片实际上是像素字节数据。但是如果需要在电脑上显示一般需要将这些数据封装到一个bmp位图文件中。然后才能后很好的在上层应用中显示。实际这个操作知识需要在这些像素字节数据前增加bmp的文件头信息,就可以完成位图的封装。
1、如何知道文件头信息?
我这里使用了一个比较投机的方法,直接通过FileStream打开一张单通道8位位图,拿到他的前1078个字节,这就是此位图文件的头部信息。代码如下
byte[] bmlHead;
using (FileStream fstream = File.Open("D://1.bmp", FileMode.Open))
{
fstream.Position = 0;
fstream.Read(bmphead, 0, 1078);
MemoryStream ms = new MemoryStream(bmphead);
string imgStr = Convert.ToBase64String(bmphead);
StreamWriter sw = new StreamWriter("D://bmpHeader.bin", false);
sw.Write(imgStr);
}
我们来看一下保存到文件后的数据:

2、如何完成图像数据与位图数据的拼接?
这里有几点需要注意:
1、此方法的头信息拼接不能直接拼接,还需要对头信息做一些调整,比如显示方式,图像宽高等等。
2、本文演示使用的是单通道8位位图文件获取的

在工业控制领域,从相机获取的图像信息通常仅为像素字节数据。要将其显示为位图,需在数据前添加bmp文件头。本文介绍了如何获取文件头信息(通过直接读取bmp文件的前1078字节),并强调了调整头信息(如显示方式、图像宽高)以及拼接图像数据的注意事项,特别指出此方法适用于单通道8位位图。

4574

被折叠的 条评论
为什么被折叠?



