利用DataSocket传输图像



主要软件: DataSocket
主要软件版本: 4.1
主要软件修正版本: N/A
次要软件: N/A

问题: 我正在尝试在LabVIEW中使用DataSocket 连接传输图像,但是读(客户端)VI不能够显示接收的图像。我应该如何正确传送图像呢?

解答: 通过DataSocket传输图像时,需要注意的一点是传输的并非一幅图像,而是指向这一图像的指针.这就是为什么传输中的客户端程序不能显示接收图像的原因. 一个好的解决方案是使用Flatten to String.vi对图像进行平化,然后通过DataSocket 写函数传输平化后的比特字符串. 在接收端, 接收到的字符串需要使用Unflatten from String.vi进行去平化以在图像显示控件中显示. 通过这种方式, 所有的数据都将通过DataSocket连接方式进行传输,而不仅仅是指针. 具体实现请参见附件中的DSReader和DSWriter 范例.

有一种可能的受限情况是通过DataSocket传输连续的图像数据流. 发送平化数据的同时保持较好的帧率是比较难于实现的. 另一种解决方案是采用一些图像压缩算法. 将图像转成JPEG格式将节省大量的处理时间和传送时间, 在接收端再将JPEG图像解压还原为原图.下面的链接中给出了这种方法的实例. 在这里使用了TCP/IP方式传送而不是DataSocket, 不过思想是相同的.

相关链接: Example Program: Compress IMAQ Images to JPEG Streams for Faster Transfer

附件:


DSReader.vi - DSReader.viDSWriter.vi - DSWriter.vi


报告日期: 04/02/2004
最近更新: 11/04/2007
文档编号: 381DHIWX