python 我遇到了这个错误(-215:Assert失败)!ssize.empty()in function 'resize' in OpenCV [关闭]

wkyowqbh  于 12个月前  发布在  Python
关注(0)|答案(9)|浏览(150)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
两年前关闭。
Improve this question
我试图将Keras的图像分类器应用到我的项目中,但在这条路上我被卡住了。虽然以前,使用相同的代码,我可以使用OpenCV来读取和训练图像,但在切换到一批新的图像后,它被错误捕获。所以我的猜测是我的文件类型有问题:
这是从得到错误的批次:
traf.204.jpg:JPEG图像数据,JFIF标准1.01,宽高比,密度1x1,片段长度16,基线,精度8,480x294,帧1
这是来自未捕获错误的批次:
bear.290.jpg:JPEG图像数据,JFIF标准1.01,宽高比,密度1x1,段长度16,基线,精度8,224x224,帧3
但是文件类型似乎完全相同(除了分辨率)。我如何解决这个问题?

9vw9lbht

9vw9lbht1#

我应该添加一个try/exception,这样我的代码就可以绕过“丑陋”的图像:

try:
    path=os.path.join(mypath, n)
    img=cv2.imread(path, cv2.IMREAD_GRAYSCALE)
    img=cv2.resize(img, (img_rows, img_cols))

except Exception as e:
    print(str(e))

字符串

  • cv2.resize()* 是它应该捕获错误的地方,因为它不能调整“损坏”的图像的大小。
mo49yndu

mo49yndu2#

还有一种可能性:图像的widthheight可能为零:

print(image.shape())
# (300, 0) -> Incorrect!
# (0, 400) -> Incorrect!

# (300, 400) -> Correct!
# (400, 300) -> Correct!

字符串
当您尝试调整图像大小时,可能会发生这种情况在应用某些图像处理技术(例如,使用OpenCV)后,图像的高度或宽度可能变为0

yb3bgrhw

yb3bgrhw3#

只需输入精确的图像格式。.jpg 而不是 .jpeg

i2loujxw

i2loujxw4#

在我的例子中,文件名中有特殊字符。如“ü",“ä",“/"等。
我不得不做出选择:自动重命名或只是提出一个错误,让用户知道,图片有坏的名字。

gjmwrych

gjmwrych5#

这个问题是因为在创建一个图像后,高度或宽度变为0。我已经解决了这个问题,在创建之前打印图像名称。所以我可以找到根本原因,由于哪个图像出现这个问题,并从我的数据集中删除了该图像。下面是我如何使用调试解决这个问题的代码:

# loop over the input images
for imagePath in imagePaths:
    # load the image, pre-process it, and store it in the data list
    print(imagePath)  #here I have printed the imagename
    image = cv2.imread(imagePath)
    image = cv2.resize(image, (28, 28))   # 28, 28
    image = img_to_array(image)
    data.append(image)

字符串

kq0g1dla

kq0g1dla6#

对我来说,我在Windows 10中打开了我的相机应用程序,这就是为什么我会收到这个错误。我关闭它并重新运行代码,它工作了。

vd8tlhqk

vd8tlhqk7#

我也遇到了类似的问题,因为我从一个目录中阅读多个图像,而这个目录中有一个pdf文件(愚蠢的),所以请确保您指定的路径中只有图像。

44u64gxh

44u64gxh8#

此问题可能是由于在扫描图像时传递了错误的图像类型。
解决方案是在检查图像之前添加一个检查:

if type(image):
    image = cv2.resize(image, (h, w), interpolation=cv2.INTER_AREA)

字符串

hmtdttj4

hmtdttj49#

imread 函数的路径中加上双反斜杠。

相关问题