2016-08-19 36 views
0

我已經有一個圖像的內存中文件。我想使用skimage的io.imread(或同等版本)來讀取圖像。然而,skimage.io.imread()取一個文件不是一個緩衝器使用scikit-image讀取圖像緩衝區

例如緩衝液:

<Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 43 00 03 02 02 02 02 02 03 02 02 02 03 03 03 03 04 06 04 04 04 04 04 08 06 06 05 ... > 

skimage.io.imread()只是導致numpy的陣列。

+0

不能使用numpy.frombuffer到緩衝區轉換成NumPy數組? skimage的圖像只是NumPy數組。 –

回答

2

嘗試緩衝區轉換成StringIO的,然後使用skimage.io.imread()

import cStringIO 

img_stringIO = cStringIO.StringIO(buf) 
img = skimage.io.imread(img_stringIO) 

讀它你也可以閱讀:

from PIL import Image 
img = Image.open(img_stringIO) 
+0

我試過這些,但Image.open()和skimage.io.imread()都在尋找文件路徑 – benwiz

+0

[Image.open](https://pillow.readthedocs.io/en/3.4.x/reference/Image。 html#PIL.Image.open)確實支持文件對象。在Python版本> = 3.0中,你可能想使用'io.BytesIO'。 Scikit圖像有幾個[插件](http://scikit-image.org/docs/dev/api/skimage.io.html#find-available-plugins)可供使用。它們可能不是全部都支持讀取文件對象。 – SiggyF