如何在python中捕获OpenCV错误?

时间:2018-12-19 17:53:27

标签: python opencv

这个问题看似重复,但是this answer对我不起作用。 我正在制作一个循环,在该循环中,我从网络摄像头收集图像,并且工作正常。我的目标是处理脚本运行时可能发生的错误。最好的情况是,我可以在发生错误时捕获错误,将其记录在我的日志文件中并继续循环,以便在解决问题后自动恢复收集图像。

这是我的代码:

while ret and not is_stop:
    try :
        timestamp = int(time.time()*1000)
        if (timestamp - last_pic) > images_interval :
            last_pic = timestamp
            resize = cv2.resize(frame, (height, width))
            th_save = threading.Thread(target=save_image, args=(resize, folder+"/"+str(timestamp)+".jpg"))
            th_save.start()
        ret, frame = cap.read()
    except cv2.error as e:
        s = str(e)
        write_log(s)
    except Exception as e:
        s = str(e)
        write_log(s)

要测试错误,请拔下网络摄像头,然后收到此错误消息:

  

[WARN:1] videoio(MSMF):调用OnReadSample()并显示错误状态:-1072873851

     

[WARN:1] videoio(MSMF):异步ReadSample()调用失败,错误状态:-1072873851

     

[WARN:2] videoio(MSMF):无法抓取帧。错误:-1072873851

     

[WARN:2]终止异步回调

整个线程被中断。 因为没有任何内容写入日志文件,所以不会捕获任何异常。 我希望能够捕获异常/错误,以便不停止线程以便能够从except子句重新运行。

任何帮助将不胜感激。

0 个答案:

没有答案