我需要创建二进制tiff文件(通常为9层,但只有0层很重要)
我得到的结果为布尔numpy 2D数组。但是我无法将它们写成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 *宽度] = array [y] [x]
TypeError:只有大小为1的数组可以转换为Python标量
PS:这是针对Camelyon ACDC LungHP挑战的,以下是确切说明:
提交格式应为TIFF二进制掩码。仅L0级别将用于计算DICE。
必须使用LZW格式压缩TIFF。
参与者必须提交包含50个TIFF口罩的zip文件。每个TIFF文件名都应命名为num_mask.tiff,其中num是测试图像的编号(请参见下文)。