Я имею дело с изображениями размером более 8 ГБ в формате .svs.Используя openslide, я прочитал их как одномерные массивы.Теперь, чтобы передать их в алгоритм, мне нужно преобразовать их в форму изображения для обработки информации, связанной с расположением пикселей.Поскольку изображения очень большие, использование PIL для преобразования массива numpy в
image=np.load('test.npy')
im=Image.fromarray(image)
приводит к ошибке size does not fit in int
.Я попытался обойти эту ошибку, изменив значение dtype
с uint8
на uint64
, но мой питон продолжает падать, несмотря на то, что на моей рабочей станции 64GB RAM and 3 TB memory
.
Затем я попытался загрузить массив numpy, используя memmap
:
im = np.load(curr_path)
shapeIm=im[:].shape ##shape of the image
name_no_ext = os.path.splitext(f[i])[0]
filename=path.join(dir,name_no_ext+'.tif') ##filename to save the image file
#Create a memmap with dtype and shape that matches our data:
fp = np.memmap(filename, dtype='uint8', mode='w+',shape=shapeIm) #memmap to read/write very large image files in chunks directly from disk
#Write data to memmap array:
fp[:] = im[:]
fp.filename == path.abspath(filename)
#Deletion flushes memory changes to disk before removing the object:
del fp
#Load the memmap and verify data was stored:
newfp = np.memmap(filename, dtype='uint8', mode='r+', shape=shapeIm)
Теперь приведенный выше код дает мне изображение в формате .tif
.Но я не могу это обработать.Я не мог понять, почему?Я обнаружил это, когда попытался прочитать это изображение и распечатать его форму.
AttributeError: у объекта 'NoneType' нет атрибута 'shape'
Итак, этот способ также не удался для меня.Затем я попытался изменить массив массивов в форме изображения (44331, 64625, 3), и я получил следующую ошибку
ValueError: последовательность слишком большая;не может быть больше 32
Может кто-нибудь помочь мне, как обработать такое изображение.У меня есть аннотации этих изображений в положениях x, y, z в пикселях, и чтобы обработать эти аннотации как основную правду, мне нужно преобразовать мой массивный массив в форму изображения.
Любая помощь будет отличной.
Редактировать: Теперь я получил изменение массива numpy.Но, все еще не знаю, как использовать пустые файлы в качестве входных данных моего набора данных вместо изображений.