我有一個大小爲〜2GB的tif文件。我想將其轉換爲一個numpy數組進行進一步處理。 我試圖用PIL.Image.open(「FileName」)打開圖像,然後將其添加到numpy數組。但我得到的錯誤:如何使用Python將超大圖像(tif)文件轉換爲數組
IO錯誤:無法識別圖像文件
的文件格式是正確的,也是準確指定的位置。你能提供一些關於它爲什麼會發生的信息嗎?你認爲它與文件大小有關嗎?
我有一個大小爲〜2GB的tif文件。我想將其轉換爲一個numpy數組進行進一步處理。 我試圖用PIL.Image.open(「FileName」)打開圖像,然後將其添加到numpy數組。但我得到的錯誤:如何使用Python將超大圖像(tif)文件轉換爲數組
IO錯誤:無法識別圖像文件
的文件格式是正確的,也是準確指定的位置。你能提供一些關於它爲什麼會發生的信息嗎?你認爲它與文件大小有關嗎?
vips對大文件的良好支持,以及convenient high-level Python binding,你可以試試。
可以加載圖像記憶是這樣的:
$ python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> gi.require_version('Vips', '8.0')
>>> from gi.repository import Vips
>>> im = Vips.Image.new_from_file("summer8x3.tif")
>>> im.width
18008
>>> im.height
22764
>>> y = im.write_to_memory()
>>> type(y)
<type 'str'>
>>> len(y)
1229802336
,然後再到以通常的方式是一個字符串數組numpy的。
您計劃進行哪種進一步處理?你可以用vips做你需要的。它會更快。
感謝您的信息:)這有助於! – webapp
您可以嘗試SciPy的:
from scipy import misc
f = misc.face()
misc.imsave('face.png', f) # uses the Image module (PIL)
import matplotlib.pyplot as plt
plt.imshow(f)
plt.show()
--source:http://www.scipy-lectures.org/advanced/image_processing/
你能否提供實際的代碼,或許是一個指向源文件的指針?除非我們能夠重現錯誤,否則很難診斷。 – Prune