首页 > 解决方案 > 如何将 Dask Array 保存为一堆图像?

问题描述

我有一个 Dask 图像数据数组。如何将此数组保存到 tiff 文件目录?

标签: pythonnumpydaskscikit-image

解决方案


理想情况下会有某种imsave功能。截至 2019 年 10 月 31 日,我找不到一个,但您将来可能想观看https://image.dask.org以了解此类功能。

您今天可以使用 map_blocks 和 skimage.io.imread 完成此操作

import dask.array as da
import skimage.io

x = da.random.random((2000, 2000), chunks=(200, 200))  # make a dask array

def save_file(arr, block_info=None):
    """ Save file to foo-x-y.tif, where x and y are block locations """
    filename = "foo-" + "-".join(map(str, block_info[0]["chunk-location"])) + ".tif"
    skimage.io.imsave(filename, arr)
    return arr

x.map_blocks(save_file, dtype=x.dtype).compute()       # call function on every block

.

$ ls
foo-0-0.tif
foo-0-1.tif
...
foo-9-8.tif
foo-9-9.tif

推荐阅读