我需要创建二进制 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 行,在 frombytes s = d.decode(data)
溢出错误:大小不适合 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] = array[y][x]
TypeError:只有大小为 1 的数组可以转换为 Python 标量
PS:这是针对 Camelyon ACDC LungHP 挑战的,这里是确切的说明:
提交格式应为 TIFF 二进制掩码。只有 L0 级别将用于计算 DICE。
TIFF 必须使用 LZW 格式压缩。
参与者必须提交一个包含 50 个 TIFF 面具的 zip 文件。每个 TIFF 文件名应命名为 num_mask.tiff,其中 num 是测试图像的编号(见下文)。