OpenCV错误:(-215:断言失败)inv_scale_x> 0在函数“cv :: resize”中

5
import numpy as np
import cv2

img = cv2.imread(r"C:\Users\User\Documents\sypder\try\bird.jpg", cv2.IMREAD_UNCHANGED)
print('Original Dimension:',img.shape)

scale_percentage = 30
width = int(img.shape[0] * scale_percentage/100)
height = int(img.shape[0] * scale_percentage/100)
dim = (width,height)
resized = cv2.resize(img,dim,interpolation = cv2.INTER_AREA)
print('Resized image',resized.shape)

cv2.imwrite('resized.jpg',resized)
cv2.imshow("Resized image",resized)

cv2.waitKey(0)

错误:ile"C:/用户/用户/文档/sypder/try/resize.py",第18行, resized = cv2.resize(img,dim,interpolation = cv2.INTER_AREA) 错误:OpenCV(4.5.5)D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp: 4055: 错误:(-215:断言失败)inv_scale_x > 0在函数'cv :: resize'中


2
“print(dim)”这句代码是什么意思--而且,你的“width”计算有误。实际上,“width”应该是“shape[1]”。 - Christoph Rackwitz
4
另一个可能的原因:当执行 int(img.shape[0] * scale_percentage/100) 时,如果 int() 内部的值小于1,则宽度和高度将为0,从而引发同样的错误。 - Javier TG
2个回答

0

你能检查一下图片路径是否正确吗?如果路径不正确,图片可能为空,在调整大小时报错。 能否在第 123 行后面添加一行代码来检查图片是否被成功读取? assert img!=None, "图片读取错误,请检查您的图片路径是否正确。"

如果是这种情况,请再次确认您的图片路径。


使用“is”/“is not”运算符检查“None”。 - Christoph Rackwitz

0
我们观察到即使输入图像数据正确提供,也会随机出现这个特定错误和CV内存不足错误。我们正在从OpenCV库的4.4.0版本升级到4.7.0版本。基本上,在OpenCV API函数cv::resize中,输入参数值在内部被破坏了。后来发现问题根源在于我们的VC++项目设置——C\C++包含头文件目录。首先提到了OpenCV旧的头文件目录路径(版本4.4.0),然后是新的头文件目录路径(版本4.7.0)。在删除旧的目录路径并重新构建项目后,问题得到解决。希望我的答案能帮助那些遇到类似问题的人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接