如何处理 CV2(Cv2.imwrite) 中的错误?

How to handle an error in CV2(Cv2.imwrite)?

我正在尝试处理 cv2.imwrite 不断抛出的错误,它不断到达文件夹中完全相同的图像,然后在 cv2.imwrite 处显示“-215:断言失败”行,我没有太多运气为这种类型的错误编写故障保险柜,它正在正确读取所以我不知道为什么它不会写。 我试过这两种方法:

        writeStatus = cv2.imwrite('output/'+ i, cropped)
        if writeStatus is True:
            print('Image Written')
        else:
            print('Error saving photo')
            cv2.imwrite('rejected/'+ i, image)
        if cv2.imwrite('output/'+ i, cropped) == True:
            print('Image write succeeded')
        else:
            if cv2.imwrite('rejected/'+ i, image)== True:
                print ('Cropped image could not be written, sent to rejects')
            else:
                print('writing error, script stopped')
                break

我不知道为什么它不保存图像,到目前为止它似乎只讨厌这个特定的图像,即使图像单独在一个文件夹中它也不会写入它,老实说我不在乎,只要我能将这样的图像输出到拒绝文件夹,而不是杀死整个脚本。 编辑 我尝试使用

        writeStatus = cv2.imwrite('output/'+ i, cropped)
        if writeStatus is True:
            print('Image Written')
        else:
            print('Error saving photo')
            continue

错误仍然停止了脚本

建议#1


如果我们看一下语句:

writeStatus = cv2.imwrite('output/'+ i, cropped)

'output/' + i应该是图片名称,裁剪后应该是图片。

据我了解,您想保存第 i 个值,但正确的方法是:

from os.path import join

filename = join('output', str(i) + '.png') # you can use other extensions like .jpg
cv2.imwrite(filename, cropped)

但是,如果 cropped 变量是图像,则为真。

建议 #2


如果单个图像导致问题而您不在乎,您可以使用 try-except 块和 continue 关键字

try:
    writeStatus = cv2.imwrite(...)
    .
    .
except:
    continue