lua - 阅读.raw文件

时间:2016-02-10 09:18:36

标签: lua torch

我正在尝试将.raw图像文件读入lua,但目前我很难将二进制文件转换为整数。我正在尝试以下代码;

f = io.open(filePath,"r")
f:read("*all") 

产生一个大的二进制打印,包括如下所示的行;

?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0??

4 个答案:

答案 0 :(得分:2)

这是你的二进制数据读取,假设只有短路:

local f = io.open("data.bin","rb")
local data = f:read("*all")
f:close()

for i=1,data:len(),2 do
    print(data:byte(i)+256*data:byte(i+1))
end

简而言之 - 您逐字节读取它并重建数值。
如果您的数据是LSB或MSB,您现在需要。我的样本假定为LSB。

答案 1 :(得分:2)

如果整个文件都是短裤,你可以使用火炬Storage,如下所示

local f = torch.ShortStorage("data.raw")

答案 2 :(得分:1)

也许你应该阅读关于二进制文件的手册中的这一部分:

  

简单模型函数io.input和io.output始终以文本模式打开文件(默认值)。在Unix中,二进制文件和文本文件之间没有区别。但在某些系统中,特别是Windows,必须使用特殊标志打开二进制文件。要处理这样的二进制文件,必须使用io.open,模式字符串中带有字母“b”。

来源:http://www.lua.org/pil/21.2.2.html

答案 3 :(得分:0)

.raw文件采用其他格式。用二进制读取它或找出正确的图像格式。解码它。