是否可以使用dask从远程服务读取.tiff文件?

时间:2019-10-16 22:07:28

标签: image-processing google-cloud-platform dask dask-distributed

我正在将.tiff文件存储在Google云存储中。我想使用分布式Dask群集installed with Helm on Kubernetes.来操纵它们。

基于dask-image reporemote data services上的Dask文档以及storage_options的使用,现在看起来像是从.zarr,.tdb,.orc 、.远程读取。支持txt,.parquet和.csv格式。那是对的吗?如果是这样,是否有建议的解决方法来访问远程.tiff文件?

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。我可能会使用skimage.io.imread之类的库连同dask.delayed来并行读取TIFF文件,然后将它们排列成Dask数组

我建议您看看this blogpost on loading image data with Dask,它的功能类似。

我相信skimage.io.imread函数将很高兴从URL读取数据,尽管它可能不知道如何与GCS互操作。如果GCS上的数据也可以通过公共URL获得(如果您可以访问GCS存储桶,则很容易做到),那么这将很容易。否则,您可以使用gcsfs库从文件中获取字节,然后将这些字节输入某些Python图像读取器中。

答案 1 :(得分:0)

基于@MRocklin的答案,我发现了使用gcsfs的两种方法。使用imageio进行图像解析的一种方法:

fs = gcsfs.GCSFileSystem(project="project_name")
img_bytes = fs.cat("bucket/blob_name.tif")
imageio.core.asarray(imageio.imread(img_bytes, "TIFF"))

另外还有一个opencv-python用于图像解析:

fs = gcsfs.GCSFileSystem(project="project_name")
fs.get("bucket/blob_name.tif", "local.tif")
img = np.asarray(cv2.imread("local.tif", cv2.IMREAD_UNCHANGED))
相关问题