Я только что наткнулся на странную ситуацию с skimage.io.imread
.
Я пытался открыть MultiPage TIFF (размеры: 96x512x512), например:
import argparse
from pathlib import Path
import numpy as np
from skimage import io
def numpy_array_from_file(path):
""" method to load numpy array from tiff file"""
im_data = io.imread(path)
print ("image dimensions {}".format(im_data.shape))
return im_data
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Extract page from a MultiPage TIFF")
parser.add_argument("tiff_file", type=str, help="3D TIFF file to open)")
args = parser.parse_args()
tiff_file = Path(args.tiff_file).absolute()
numpy_array_from_file(tiff_file)
И я получалв выводе:
image dimensions (512, 512)
Попробовав много разных вещей (поскольку я был уверен, что мое входное изображение содержало 96 страниц), я обнаружил, что проблема заключается в прямом использовании Path
в numpy_array_from_file
вместоиспользования строки. Изменив последнюю строку на:
numpy_array_from_file(str(tiff_file))
Я получил ожидаемое:
image dimensions (96, 512, 512)
Итак, мой вопрос ... Кто-нибудь знает, почему у меня такое поведение? Я не очень опытный в Python, но я ожидал получить ошибку, если Path
не подходит в этой ситуации.