问题
有医学图像处理的读者问我说,他的OpenCV无法读取他所需要的大图,他的图像以位图形式存储时大小约为1.5GB,使用imread读取时图像为空。
读者可访问此处,下载已经修改好的源代码
自定义OpenCV代码下载链接
原因分析
出于对内存的保护,OpenCV的开发者对imread图像的大小做了限制,这个大小是2的30次方,恰好为1个G,这个同学想通过imread函数读取1.5G的图像,在不修改源码的情况下是不现实的。
解决策略
只需要简单的修改OpenCV的源码就足以解决这个问题。
1.打开源码中的imgcodecs模块,找到loadsave.cpp
2.改
utils::getConfigurationParameterSizeT("OPENCV_IO_MAX_IMAGE_PIXELS", 1</