处理大型TIFF图像C++/Magick/libtiff
Dealing with large TIFF images C++/Magick/libtiff
我正在编写基于OpenCV的C++软件来分析大量的大TIFF图像-特征提取和表征。我目前的方法是尝试将每张图像分割成更小的裁剪部分,单独分析每张图像并合并结果。我正在尝试使用ImageMagick转换功能来进行裁剪,带有标志:
convert input.tif -crop 4000x4000 +repage -scene 0 "output%d.tif"
然而,这会运行数小时,利用100%的RAM和100%的IO吞吐量,而不会产生任何输出。
magick的识别输入.tif给出的图像细节为:
input.tif TIFF64 63488x49408 63488x49408+0+0 8-bit sRGB 9.4112GB 0.000u 0:00.031
在图像的较小(约20k乘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
我认为我在这里的另一个答案应该对您有很大帮助,但您可以检查的另一件事是,您允许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
并检查CCD_ 1选项。
如果它很低,你可以在命令行上用类似的东西来增加它
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
相关文章:
- 在Windows上使用Magick++库
- 无法链接 libtiff
- 不存在从"Magick::Color"到"MagickCore::Quantum"的合适转换功能
- 当我调用它来解码 Blob 对象中的 png 图像时,"Magick++::readImages"引发警告
- UINT8/16 /32/etc 和 INT8/16/32/etc 在 libtiff 中不起作用?
- Magick++没有加载TGA blob
- 如何在没有Cygwin或Visual Studio的情况下编译Magick++?
- Magick++ Blob to Image Error
- CMake / 错误时链接 libfreeimage / libtiff.
- 在C++中从流缓冲区初始化 Magick++
- Mac OS c++ Link OpenCV and libtiff
- 如何在Magick++中编写这些“转换”命令
- magick 对magick :: image :: columns的未定义引用
- Magick++ Bitmap::GetThumbnailImage() 阻止文件,无法删除它
- 如何使用由 PNG 数据构建的 blob 初始化 Magick::Image obj(PNG 由 cv::imencod
- 如何使用ImageMagick Magick 将图像作为gif写为blob
- libtiff读写C 中的RGBA图像
- Magick++ ImageMagick 7.0.5-4 Q16 的统计数据x86_64问题
- Rcpp:Magick++中的编译器和链接器标志
- 处理大型TIFF图像C++/Magick/libtiff