Я использую этот код для обработки изображений всего слайда (формат .svs).Этот код работает хорошо, когда NUM_TOP_TILES = 50 до NUM_TOP_TILES = 12000
.Поскольку изображения целого слайда имеют очень большой размер, в этом случае, если я увеличиваю NUM_TOP_TILES>12000
, я получаю ошибку
OverflowError: размер не помещается в ошибку int.
Это очень распространенная проблема с Pillow
, когда использовались большие изображения.В github
и StackOverFlow
доступно много решений, но я не могу решить свою проблему.Согласно моему анализу, Image.fromarray()
из Pillow
в приведенной ниже функции вызывает эту проблему.Будет очень полезно, если кто-нибудь предложит какое-либо решение для решения этой проблемы.Для справки я привел соответствующие function
и error traceback
.
Функция:
def np_to_pil(np_img):
"""
Convert a NumPy array to a PIL Image.
Args:
np_img: The image represented as a NumPy array.
Returns:
The NumPy array converted to a PIL Image.
"""
if np_img.dtype == "bool":
np_img = np_img.astype("uint8") * 255
elif np_img.dtype == "float64":
np_img = (np_img * 255).astype("uint8")
return Image.fromarray(np_img)
Отслеживание ошибок
Traceback (последний последний вызов):
File "WsiToImagePatch.py", line 35, in np_to_pil
return Image.fromarray(np_img)
File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 2536, in fromarray
return frombuffer(mode, size, obj, "raw", rawmode, 0, 1)
File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 2479, in frombuffer
return frombytes(mode, size, data, decoder_name, args)
File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 2412, in frombytes
im.frombytes(data, decoder_name, args)
File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 812, in frombytes
s = d.decode(data)
OverflowError: size does not fit in an int