python - "error: (-215) ssize.area() > 0 in function cv::resize"的大图像上的 OpenCV 调整大小失败

标签 python python-3.x image opencv opencv3.0

我正在使用 OpenCV 3.0.0 和 Python 3.4.3 处理非常大的 RGB 图像 (107162,79553,3)。当我尝试使用以下代码调整它的大小时:

import cv2
image = cv2.resize(img, (0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)

我收到了这条错误消息:

cv2.error: C:\opencv-3.0.0\source\modules\imgproc\src\imgwarp.cpp:3208: error: (-215) ssize.area() > 0 in function cv::resize

我确定图像数组中有图像内容,因为我可以将它们保存为 jpg 格式的小图 block 。当我尝试调整图像的一小部分大小时,没有问题,我最终得到了正确调整大小的图像。 (取一个相当大的 block (50000,50000,3) 仍然行不通,但它可以处理 (10000,10000,3) block )

是什么导致了这个问题,我该如何解决?

最佳答案

原来问题出在modules\imgproc\src\imgwarp.cpp中的一行:

CV_Assert( ssize.area() > 0 );

当要调整大小的图像的行和列的乘积大于 2^31 时,ssize.area() 的结果为负数。这似乎是 OpenCV 中的一个错误,希望在未来的版本中得到修复。一个临时的修复方法是在构建 OpenCV 时将这一行注释掉。虽然不理想,但对我有用。

而且我最近才发现,以上仅适用于宽度大于高度的图像。对于高度大于宽度的图像,以下行会导致错误:

CV_Assert( dsize.area() > 0 );

所以这也必须被注释掉。

关于python - "error: (-215) ssize.area() > 0 in function cv::resize"的大图像上的 OpenCV 调整大小失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996367/

相关文章:

python - 为什么有分号;在 matplotlibs plot() 函数之后?

python - 递归日志记录使 Python 3 中的解释器崩溃

python - 练习 5.2 难住了

c++ - Pixbuf 显示有关图像的错误信息

javascript - 根据 slider 图像更改具有模糊效果的页面背景颜色

c# - 如何将图像裁剪成正方形

python - 当我使用 Tor 时请求保留我的 IP 地址

python - 如何在 jupyter 笔记本中运行 Spark-Submit?

python-3.x - 如果字符串可以转换为 float,则返回 True

python - Matplotlib 属性错误 : module 'matplotlib.cbook' has no attribute '_define_aliases'