2016-08-19 1 views
0

У меня уже есть файл с памятью в памяти. Я хотел бы использовать io.imread skimage (или эквивалент) для чтения на изображении. Тем не менее, skimage.io.imread() взять файл не буферИспользовать scikit-изображение для чтения в буфере изображения

пример буфера:

<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

Смежные вопросы