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

2024-10-02 14:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图处理cv2.imwrite不断抛出的错误,它不断到达文件夹中完全相同的图像,然后在cv2.imwrite行上说“-215:Assertion failed”,我没有太多的运气为这种类型的错误编写fail Safe,它读取正确,所以我不知道它为什么不写。 我尝试过这两种方法:

        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

错误仍然停止了脚本


Tags: 图像image文件夹trueoutputifis错误
1条回答
网友
1楼 · 发布于 2024-10-02 14:21:13

建议#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

相关问题 更多 >