我正在加载一个非常大的图像(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