首页 > 其他分享 >解决imread无法载入特大尺寸的图片的问题

解决imread无法载入特大尺寸的图片的问题

时间:2024-10-24 14:20:56浏览次数:6  
标签:修改 特大 像素 载入 OpenCV imread 环境变量

解决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

相关文章