我正在将.tiff文件存储在Google云存储中。我想使用分布式Dask群集installed with Helm on Kubernetes.来操纵它们。
基于dask-image repo,remote data services上的Dask文档以及storage_options的使用,现在看起来像是从.zarr,.tdb,.orc 、.远程读取。支持txt,.parquet和.csv格式。那是对的吗?如果是这样,是否有建议的解决方法来访问远程.tiff文件?
答案 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))