【问题标题】:lua - Read .raw filelua - 读取 .raw 文件
【发布时间】:2016-05-20 13:25:07
【问题描述】:

我正在尝试将 .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??

【问题讨论】:

  • 补充一下,我知道该文件包含短裤。
  • 原始文件通常使用 12 或 14 位来表示每个像素(每个颜色通道)。您可以选择预处理成更紧凑的形式吗?

标签: lua torch


【解决方案1】:

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

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。

【讨论】:

    【解决方案2】:

    如果整个文件都是shorts,可以使用torchStorage如下

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2015-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-18
          • 2012-03-07
          • 2020-12-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多