我正在尝试读取一个图像文件,它是*.his格式。老实说,我对这种格式不太了解,花一些时间在谷歌上,我发现它是二进制格式,可以在ImageJ软件中作为原始格式导入。在进一步的查询中,我发现了*.his文件的以下细节:
有了这些信息,我就开始.
只想一个一个地打印这些值,只为了查看输出:
f = open("file.his", 'rb')
f.seek(100)
try:
byte = f.read(2)
while byte != "":
byte = f.read(2)
print unpack('<H', byte)
finally:
f.close()它打印出一些数字,然后错误消息:.(64846,)(64846) (64830,)
回溯(最近一次调用):打印解包(‘
请有人建议我如何阅读这类文件。我仍然认为‘解包’是正确的功能,但如果有人有类似的经验,任何反应都非常感谢。
Rky。
发布于 2014-02-22 04:56:49
对于*.inr图像文件,我做了一个非常类似的任务--也许逻辑可以帮助您,这里是您可以应用的内容:
1-读取文件
首先,您需要读取文件。
file = open(hisfile, 'r')
inp = file.readlines()2-Get报头
在我的例子中,我执行了for循环,直到字符数达到256个为止,在您的示例中,您需要计数位,以便逐行“打印”以确定何时需要停止或尝试使用此方法来计数比特:
import sys
sys.getsizeof(line) #returns the size of the object3-数据
当您已经知道以下行是原始数据时,需要将它们放入一个带有for循环的变量中:
for line in inp:
raw_data += line4-转换数据
要将字符串转换为numpy数组,可以这样做:
data = fromstring(raw_data, dtype='uint16')然后使用形状数据:
data = data.reshape((1024,1024)).transpose() #You need to see if the transpose part its relevant,because in my case was fundamental.也许,如果你有一个文件的例子,我可以试着读它,并帮助你更多。当然,您可以使用if's在1 for循环中完成所有进程。
https://stackoverflow.com/questions/21949710
复制相似问题