将图像保存到Lua中的HDF5文件时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将图像保存到Lua中的HDF5文件时出错相关的知识,希望对你有一定的参考价值。

当尝试将Lua中的一堆图像转换为HDF5文件时,出现以下错误:

/home/ubuntu/torch/install/bin/luajit: /home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:97: attempt to call method 'adjustForData' (a nil value)
stack traceback:
        /home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:97: in function '_writeData'
        /home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:307: in function '_write_or_append'
        /home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:270: in function </home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:269>
        /home/ubuntu/torch/install/share/lua/5.1/hdf5/file.lua:84: in function '_write_or_append'
        /home/ubuntu/torch/install/share/lua/5.1/hdf5/file.lua:58: in function 'write'

这是发生错误的地方:

for i = 1, #input_images_caffe do
   newFile:write('images', input_images_caffe[i], 'w')
end

input_image_caffe内的图片来自:

  local input_size = math.ceil(params.input_scale * params.image_size)
  local input_image_list = params.input_image:split(',')
  local input_images_caffe = {}
  local img_caffe
  for _, img_path in ipairs(input_image_list) do
    local img = image.load(img_path, 3)
    img = image.scale(img, input_size, 'bilinear')
    img_caffe = preprocess(img):float()
    table.insert(input_images_caffe, img_caffe)
  end

此函数用于预处理图像:

function preprocess(img)
  local mean_pixel = torch.DoubleTensor({103.939, 116.779, 123.68})
  local perm = torch.LongTensor{3, 2, 1}
  img = img:index(1, perm):mul(256.0)
  mean_pixel = mean_pixel:view(3, 1, 1):expandAs(img)
  img:add(-1, mean_pixel)
  return img
end

input_images_caffe可能包含的一些例子:

{
  1 : FloatTensor - size: 3x405x512
  2 : FloatTensor - size: 3x512x393
}

要么:

{
  1 : FloatTensor - size: 3x405x512
}

HDF5创建于:

  local newFile = hdf5.open(params.output_hdf5, 'w')

我正在使用torch-hdf5库:

https://github.com/deepmind/torch-hdf5

我不确定我在这里做错了什么?

答案

newFile:write('images', input_images_caffe[i], 'w')

请尝试使用newFile:write('images', input_images_caffe[i])third parameter应该是(可选的)options对象,但是你传递的是一个字符串,它没有adjustForData方法,因此你得到的错误。

以上是关于将图像保存到Lua中的HDF5文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

HDF5:将线性数组保存到三维数据集

使用grabToImage将QML项目作为图像保存到文件时出错

尝试将文件路径保存到数据库时出错

从firebase检索图像以在片段中的回收器视图时出错

使用 h5py 将光栅图像添加到 HDF5 文件

如何从 hdf5 保存/提取数据集并转换为 TiFF?