删除OpenCV图像大小限制



我正在加载一个非常大的图像(60000 x 80000像素(,并且超过了我可以加载的最大像素:

cv2.error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv-python/opencv/modules/imgcodecs/src/loadsave.cpp:75: 
error: (-215:Assertion failed) pixels <= CV_IO_MAX_IMAGE_PIXELS in function 'validateInputImageSize'

根据我的发现,这是指对65号线路施加的限制

理想情况下,我会改变它来处理至少5千兆像素的图像

#define CV_IO_MAX_IMAGE_PIXELS (1<<33)

我已经看到了一些解决方案(OpenCV图像大小限制(,但这些似乎并不能解决任意定义的问题(我正在使用700gb ram的高性能服务器,所以计算不是问题(。

我的问题是我不知道这个文件在哪里。这个错误将我指向这个"travis"目录,它在本地对我来说不存在,而且在我的本地环境中,c++文件不可用。

你知道在哪里可以找到c++库吗?

您必须修改openCV源文件,然后自己编译。

编辑:您还可以修改环境变量

export CV_IO_MAX_IMAGE_PIXELS=1099511627776

对于我的问题,我应该指定它是.tif文件(注意,大多数大图像都是这种文件格式(。在这种情况下,将其加载到numpy数组(这样它就可以使用OpenCV(的一种非常简单的方法是使用包tifffile。

pip install tifffile as tifi

这将在您的python环境中安装它。

import tifffile as tifi
img = tifi.imread("VeryLargeFile.tif")

从这里你可以像使用任何numpy数组一样使用它,它与OpenCV等完全兼容。

将以下内容添加到程序中应该可以修复python opencv中的问题。

import os
os.environ["OPENCV_IO_MAX_IMAGE_PIXELS"] = str(pow(2,40))
import cv2

最新更新