我遇到此错误(-215:Assertion失败)!opencv中'resize'函数中的!ssize.empty()

Tso*_*Phu 3 python opencv keras

我试图将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

但是文件类型似乎完全相同(分辨率除外)。请帮助我解决这个问题,我仍然是python上的opencv和keras的新手。

She*_*zod 10

另一种可能性:图像的widthor可能为零:height

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

# (300, 400) -> Correct!
# (400, 300) -> Correct!
Run Code Online (Sandbox Code Playgroud)

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


Tso*_*Phu 5

谢谢大家,我弄清楚了,我应该添加一个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))
Run Code Online (Sandbox Code Playgroud)

cv2.resize()是应该捕获错误的位置,因为它无法调整“损坏”的图像的大小。