作者afreet (ku)
看板Python
标题[问题] Hdf5转Tiff档 fabio读取hdf5档案时显示错
时间Wed Nov 23 18:58:10 2022
import os
import fabio
import numpy as np
def generate_tiff_files(fn, path, prefix, compress):
"""
Generate tiff files from a hdf file.
:param fn, metadata, path, prefix:
:return: -
"""
print('Generating TIFF Files...')
with fabio.open(fn) as fabio_img:
# create_tiff(fabio_img.data, metadata, path, prefix, 1)
create_tiff(fabio_img, path, prefix, 1, compress)
if fabio_img.nframes > 1:
for i in range(2, fabio_img.nframes + 1):
fabio_img = fabio_img.next()
# create_tiff(fabio_img.data, metadata, path, prefix, i)
create_tiff(fabio_img, path, prefix, i, compress)
log_progress(i, fabio_img.nframes)
print('Completed')
generate_tiff_files(r'C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff\rat8_trabec1_225_data_000001.h5', r'rat8_trabec1_225_data_000001.h5', r'C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff', False)
这段程式码是我在这个网站上找到的, 他写说是可以把 h5转成tiff档. Convert HDF5 file to TIFF files — MuscleX 1.15.7 documentation
Source code在这:
https://github.com/biocatiit/musclex/blob/master/musclex/utils/hdf5_to_tiffs.py
我尝试要把h5的档案转成tiff档,, 装了Fabio 的 package 後试着跑了第二段的程式码但却跑出下面的错误讯息, 尝试在stack overflow 上找过了可是大部分都说是因为档案受损导致,我用确定没受损的档案也照样会跑出错误讯息. 小妹我尝试用关键字找但还是不知道为什麽fabio没办法读h5档, 我是这学期才刚开始学python, 还不是很熟悉. 请问我到底要怎麽办才能让fabio正常读我想要的h5档?
错误讯息:
Generating TIFF Files...
Traceback (most recent call last):
File "C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff\hdf5_to_tiffs.py", line 120, in <module>
generate_tiff_files(r'C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff\rat8_trabec1_225_data_000001.h5', r'rat8_trabec1_225_data_000001.h5', r'C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff', False)
File "C:\Users\wayne\OneDrive\Desktop\Test_hdf5_to_tiff\hdf5_to_tiffs.py", line 51, in generate_tiff_files
with fabio.open(fn) as fabio_img:
File "C:\Users\wayne\AppData\Local\Programs\Python\Python310\lib\site-packages\fabio\openimage.py", line 180, in openimage
obj = obj.read(obj.filename, frame)
File "C:\Users\wayne\AppData\Local\Programs\Python\Python310\lib\site-packages\fabio\eigerimage.py", line 159, in read
self._data = self.dataset[0][self.currentframe,:,:]
File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "C:\Users\wayne\AppData\Local\Programs\Python\Python310\lib\site-packages\h5py\_hl\dataset.py", line 741, in __getitem__
return self._fast_reader.read(args)
File "h5py\_selector.pyx", line 370, in h5py._selector.Reader.read
OSError: Can't read data (can't open directory)
-----
Sent from JPTT on my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.237.229 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1669201094.A.92F.html
1F:→ DavisX: 你的.h5档是dectris eiger detector吐的吗? 11/23 22:51
2F:→ DavisX: 如果是 -> 他的dataset是有lz4压缩过的 11/23 22:51
3F:→ DavisX: 如果没几张 -> 建议你去dectris网站抓albula viewer 11/23 22:52
4F:→ DavisX: 用这viewer去另存tiff就好 11/23 22:52
5F:→ DavisX: 如果想自己弄 -> 建议装 h5py 和 hdf5plugin (用pip) 11/23 22:53
6F:推 lycantrope: 单纯是output path给错 11/24 08:59
7F:→ lycantrope: source code命名烂,fn的path是输出的folder 11/24 09:03
8F:→ lycantrope: prefix则是输出的tiff的prefix 11/24 09:03
9F:→ afreet: 感谢楼上两位,装了hdf5plugin就解决了 11/24 09:53
※ 编辑: afreet (123.194.170.161 台湾), 08/18/2023 04:19:52