从numpy数组创建二进制tiff文件(用lzw压缩)

时间:2019-03-11 15:12:16

标签: python numpy python-imaging-library tiff vips

我需要创建二进制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挑战的,以下是确切说明:

  1. 提交格式应为TIFF二进制掩码。仅L0级别将用于计算DICE。

  2. 必须使用LZW格式压缩TIFF。

  3. 参与者必须提交包含50个TIFF口罩的zip文件。每个TIFF文件名都应命名为num_mask.tiff,其中num是测试图像的编号(请参见下文)。

https://acdc-lunghp.grand-challenge.org

0 个答案:

没有答案