Мне нужно создать двоичные TIFF-файлы (обычно 9-слойный, но важен только слой 0)
У меня есть результаты в виде двухмерных массивов с логическими значениями. Но я не мог написать их в формате TIFF.
Код с PIL:
res = np.zeros((89262, 208796),dtype=bool)
rois = np.load(endfile)
prediction = np.load(pred)
for i in range(prediction.size):
if(prediction[i]==1):
y1, x1, y2, x2 = rois[i].astype(int)
res[y1:y2,x1:x2] =True
im = PIL.Image.fromarray(res,mode='1')
Файл "/path/to/anaconda3/lib/python3.6/site-packages/PIL/Image.py", строка 812, из байтов
s = d.decode (data)
OverflowError: размер не помещается в int
Код с pyvips
res = np.zeros((89262, 208796),dtype=bool)
rois = np.load(endfile)
prediction = np.load(pred)
for i in range(prediction.size):
if(prediction[i]==1):
y1, x1, y2, x2 = rois[i].astype(int)
res[y1:y2,x1:x2] =True
im = pyvips.Image.new_from_array(res)
Файл "/path/to/anaconda3/lib/python3.6/site-packages/pyvips/vimage.py", строка 291, в new_from_array
a [x + y * width] = массив [y] [x]
TypeError: в скаляры Python могут быть преобразованы только массивы размера 1
PS: Это для испытания Camelyon ACDC LungHP, и вот точные инструкции:
Формат представления должен быть двоичной маской TIFF. Для расчета DICE будет использоваться только уровень L0.
TIFF должен быть сжат в формате LZW.
Участники должны предоставить zip-файл, включающий 50 масок TIFF. Каждое имя файла TIFF должно называться num_mask.tiff, где num - номер тестового изображения (см. Ниже).
https://acdc -lunghp.grand-challenge.org