解决imread无法载入特大尺寸的图片的问题
文章目录
一、问题背景
有项目需要从本地载入像素尺寸为8w*3w的图片用于显示和做其他处理,在调用imread读取该图片时发现会导致软件崩溃。于是我查看OpenCV的源码文件modules\imgcodecs\src\loadsave.cpp中定义,发现默认情况下,OpenCV支持的最大像素数目为2^30(约10亿像素)。当尝试载入超过这个限制的图像时,程序可能会崩溃或无法读取图像。
二、解决方案:
方案1:重新编译OpenCV库
修改OpenCV的源码文件中宏的像素限制,并重新生成安装包。
方案2:修改系统环境变量
修改环境变量OPENCV_IO_MAX_IMAGE_PIXELS来增加OpenCV支持的最大像素数目。
为了偷懒(毕竟重新编译CV库耗时太长),我选择方案2去修改系统环境变量。
三、方案2修改步骤:
1.确定新的像素限制:
将OPENCV_IO_MAX_IMAGE_PIXELS设置为20000000000(200亿像素)。这个值应该根据你的系统内存和实际需求来确定。
2.修改环境变量:
1)在Windows系统中,进入“系统信息”界面,然后点击“高级系统设置”。
2)在“系统属性”窗口中,点击“高级”选项卡下的“环境变量”按钮。
3)在“系统变量”区域中,找到名为“Path”的变量并双击,或者点击“新建”按钮创建一个新的系统变量。
4)在“变量值”字段中,添加或修改环境变量OPENCV_IO_MAX_IMAGE_PIXELS的值为20000000000。
5)点击“确定”保存更改。
重新调用imread去载入之前那张大尺寸图片,可以发现程序不会报错,并且能读到运行内存中!
四、结论
通过修改环境变量OPENCV_IO_MAX_IMAGE_PIXELS,我们可以解决OpenCV的imread函数无法载入特大尺寸图片的问题。这为我们处理高分辨率图像提供了更多的灵活性和可能性。
如果你有更好的建议,欢迎分享在评论区。
标签:修改,特大,像素,载入,OpenCV,imread,环境变量 From: https://blog.csdn.net/weixin_39985355/article/details/143207165