gpt4 book ai didi

c++ - 处理大型 TIFF 图像 C++/Magick/libtiff

转载 作者:太空狗 更新时间:2023-10-29 23:01:26 24 4
gpt4 key购买 nike

我正在编写基于 OpenCV 的 C++ 软件来分析大量大型 TIFF 图像 - 特征提取和表征。我目前的方法是尝试将每个图像分割成更小的裁剪部分,单独分析每个图像并合并结果。我正在尝试使用 Image Magick 转换功能进行裁剪,带有标志:

convert input.tif -crop 4000x4000 +repage -scene 0 "output%d.tif"

然而,这会运行数小时,使用 100% 的 RAM 和 100% 的 IO 吞吐量,而不会产生任何输出。

magick 的 identify input.tif 给出的图像细节是:

input.tif TIFF64 63488x49408 63488x49408+0+0 8-bit sRGB 9.4112GB 0.000u 0:00.031

同样的指令在图像的较小(大约 20k x 20k)下采样版本上运行会在 5 秒内返回输出。

计算机有 8GB RAM、windows 8 x64 和 2.00GHz CPU。

谁能告诉我如何确定问题所在?否则,有人可以建议我用另一种方法来解决这个问题吗?

编辑 1:更多信息

 c:\test>identify -list resource
Resource limits:
Width: 214.7MP
Height: 214.7MP
Area: 14.888GP
Memory: 6.9326GiB
Map: 13.865GiB
Disk: unlimited
File: 1536
Thread: 4
Throttle: 0
Time: unlimited

最佳答案

我想我的另一个答案here应该对您有很大帮助,但您可以检查的另一件事是您允许 ImageMagick 使用您的 8GB RAM。试试这个命令

identify -list resource
Resource limits:
Width: 214.7MP
Height: 214.7MP
Area: 4.295GP
Memory: 2GiB <---
Map: 4GiB
Disk: unlimited
File: 192
Thread: 1
Throttle: 0
Time: unlimited

并勾选Memory选项。

如果它很低,你可以在命令行上用这样的东西来增加它

convert -limit memory 6GiB ...

或者像这样的环境变量:

export MAGICK_MEMORY_LIMIT=8000000000
identify -list resource
Resource limits:
Width: 214.7MP
Height: 214.7MP
Area: 4.295GP
Memory: 7.4506GiB <---
Map: 4GiB
Disk: unlimited
File: 192
Thread: 1
Throttle: 0
Time: unlimited

关于c++ - 处理大型 TIFF 图像 C++/Magick/libtiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com