numpy的fromfile计数参数是如何工作的?

2 投票
1 回答
1710 浏览
提问于 2025-04-18 01:52

我正在尝试用numpy的fromfile函数读取一个二进制文件:

   f = open("01.wcf", 'r')
   wcf_header = np.fromfile(f, dtype=WC_IMAGE_DATA_HEADER_2, count=1)

   f.seek(5592)
   wcf = np.fromfile(f, dtype=WC_IMAGE_DATA, count=1)

   f.seek(6660)
   size = wcf['Width'] * wcf['Height']
   print size
   raw = np.fromfile(f, dtype=np.uint16, count=size)
   print np.size(raw)

前两个调用都没问题。我现在知道,从6660开始,会有一张图片,大小是wcf['Width']*wcf['Height'](在我的例子中是512*512)。所以我把这个数字传进去,但这个函数只读取了283个值。实际上,它最多只能读取283个值,也就是说,如果我传入的数量大于283,它只会读取283个值。如果我传入的数量小于283,它就会读取我指定的数量。

当我传入count=-1(也就是读取文件直到结束的所有值)时,它可以正常工作,也就是说文件里还有更多的值。然而,由于这个二进制格式可以包含多张图片,我需要指定我想读取的值的数量。

有没有人知道我哪里做错了?

1 个回答

1

这是一个二进制文件,所以应该以二进制模式打开:

f = open("01.wcf", 'rb')

撰写回答