【问题标题】:Remove OpenCV image size limitation移除 OpenCV 图像大小限制
【发布时间】:2020-04-01 03:55:20
【问题描述】:

我正在加载一个非常大的图像(60,000 x 80,000 像素)并且超出了我可以加载的最大像素:

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'

据我发现,这是指对line 65施加的限制

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

#define CV_IO_MAX_IMAGE_PIXELS (1<<33)

我已经看到了一些解决方法 (OpenCV image size limit),但这些方法似乎无法解决任意定义的问题(我正在使用 700gb 内存的高性能服务器,所以计算不是问题)。

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

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

【问题讨论】:

    标签: python opencv


    【解决方案1】:

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

    编辑:你也可以修改环境变量

    export CV_IO_MAX_IMAGE_PIXELS=1099511627776
    

    【讨论】:

    【解决方案2】:

    对于我的问题,我应该指定它是一个 .tif 文件(注意大多数大图像无论如何都会采用这种文件格式)。在这种情况下,将它加载到 numpy 数组(以便它可以与 OpenCV 一起使用)的一种非常简单的方法是使用包 tifffile。

    pip install tifffile as tifi
    

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 2011-10-07
        • 1970-01-01
        • 2018-02-07
        • 2013-04-05
        • 2023-04-05
        • 2014-06-17
        • 2012-10-13
        • 2012-01-05
        相关资源
        最近更新 更多