我一直在寻找有关此问题的几天,但没有找到任何已解决的线程。我需要通过一个简单的方法将相当大的图像(4 GB 及以上,.tiff / .png)加载到 openCV 代码中
src = imread(filepath, 1);
我正在使用 Visual Studio 2013,C++。
虽然我使用的是 96Gb-RAM 机器,但当通过 OpenCV 的“imread”函数加载这些大图像时,运行时警报会出现。一直在尝试使用越来越小的图像/文件,直到它们确实被读取/加载,所以我们知道这是内存/分配的问题,因为较小的图像被正确加载和处理。
控制台正在通过以下消息,由“catch (...)”提取
OpenCV 错误:cv::setSize 文件 C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\ 中的参数值之一超出范围(总矩阵大小不适合“size_t”类型)核心\src\matrix.cpp,第 126 行
另一方面,VS2013 在运行时显示以下警告(完全没有编译问题):
poblacion.exe 中 0x76385608 处未处理的异常:Microsoft C++ 异常:内存位置 0x00C7EA70 处的 cv::Exception
还争论“没有加载符号”。我们在 Win32,调试模式下编译。
这个问题是 bug #3258 但没有找到解决的线程,只是讨论 size_t 类型导致没有明确的解决方案......应该有一种无需通过 openCV 库即可读取大图像的方法......
有没有人可以帮助我们?我会传播任何令人满意的解决方案。
提前谢谢!
亚历克斯