0 in function cv::resize"的大图像上的 OpenCV 调整大小失败-6ren"> 0 in function cv::resize"的大图像上的 OpenCV 调整大小失败-我正在使用 OpenCV 3.0.0 和 Python 3.4.3 处理非常大的 RGB 图像 (107162,79553,3)。当我尝试使用以下代码调整它的大小时: import cv2 image-6ren">
gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:37:30 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com