Максимальное разрешение изображения Skimage (memoryerror) - PullRequest
0 голосов
/ 01 мая 2018

В настоящее время я использую scikit-изображение как способ обработки моих изображений в python. Но после некоторого тестирования я обнаружил, что scikit-изображение не работает с изображениями с высоким разрешением. Я попытался использовать изображение с разрешением 3024 x 4032, но это привело к ошибке MemoryError. Это происходит на множестве различных методов, предоставляемых scikit-image.

Я обнаружил, что это работает, если я уменьшу изображение до более низкого разрешения. Я хочу знать, что максимально допустимое разрешение позволяет уменьшить изображение, не теряя при этом его качества. И я могу проверить, не слишком ли большое разрешение.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Ваш обходной путь в порядке, но я бы сделал это так:

from skimage import io
from skimage import img_as_ubyte

img = img_as_ubyte(io.imread('test.jpg', as_grey=True))
0 голосов
/ 02 мая 2018

Я нашел реальную причину проблемы. Это не разрешение, а scikit-изображение, которое изменяет тип данных изображения на плавающее, что делает его слишком большим для стека памяти.

Способ обойти это - превратить ваше изображение в массив с помощью типа данных uint8. Как это:

from PIL import Image
import numpy as np
from skimage.color import rgb2gray

im = Image.open("test.jpg")
pix = np.array(im, dtype=np.uint8)
img = rgb2gray(pix)

после преобразования его в пустой массив, вы можете использовать его для любой операции, предоставляемой scikit-image

...