我下载了一张150 at的卫星.jp2图像,我一次只想要一小部分。我将如何将图像平铺成可管理的块呢?仅仅提取图像的一部分也就足够了。
因为我只对Python有点熟悉,所以我看了Pillow和OpenCV库,但是没有成功,因为图像分辨率超过了它们的极限。我还研究了Python的Openslide,但是无法消除错误(无法找到模块'libopenslide-0.dll')。
发布于 2022-03-01 22:48:44
利维普斯能够有效地处理海量图像。
例如,对于这个2.8gb测试映像:
$ vipsheader 9235.jp2
9235.jp2: 107568x79650 uchar, 4 bands, srgb, jp2kload
$ ls -l 9235.jp2
-rw-r--r-- 1 john john 2881486848 Mar 1 22:37 9235.jp2我看到:
$ /usr/bin/time -f %M:%e \
vips crop 9235.jp2 x.jpg 10000 10000 1000 1000
190848:0.45因此,它在0.5s内从110,000 x 80,000像素的jp2图像中获取1,000 x1,000像素块,并且需要不足200 in的内存。
有针对python、ruby、节点等的绑定,所以您不必使用CLI。
在python中,您可以编写:
import pyvips
image = pyvips.Image.new_from_file("9235.jp2")
tile = image.crop(10000, 10000, 1000, 1000)
tile.write_to_file("x.jpg")这在一定程度上取决于您正在读取的jp2图像。有些是无题的(!)读一段可能会很慢。
也有windows二进制文件,请查看“下载”页面。
如果您在linux上,vipsdisp可以非常快地查看这样的巨大图像。
发布于 2022-03-20 22:09:25
Grok JPEG 2000工具包能够解压缩超大型图像的区域,比如链接到的150 GB图像。
示例命令:
grk_decompress -i FOO.jp2 -o FOO.tif -d 10000,10000,15000,15000 -v
若要将区域(10000,10000,15000,15000)解压缩为TIFF格式,请执行以下操作。
https://stackoverflow.com/questions/71311547
复制相似问题