如何在Python中捕获"OpenCV错误"

use*_*342 16 python opencv

如果我得到OpenCV错误:...

自OpenCV Error使用两个单词以来,它的语法是什么?我能够抓住以下cv.error,但我怎么能抓住这个?

编辑:

我不明白......答案显而易见吗?我不清楚吗?

编辑2

我无法重现它b/c我在另一台计算机上,但它看起来类似于:

OpenCV Error: Bad argument. Something something array

cv.error: This is another error

我能够通过以下方式捕获cv.error但不能捕获OpenCV错误:

try:
    # do a thing
except (cv.error, OpenCV Error):
    print "Can't do the thing"
    sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

mat*_*fee 23

试试cv2.error.

try:
    ...
except cv2.error as e:
    ...
Run Code Online (Sandbox Code Playgroud)

这是文档中的页面,但它仅用于C/C++接口 - 我在OpenCV的Python错误处理上找不到任何东西(我发现Python接口的文档很遗憾).


Mil*_*kus 5

您可以轻松检查错误对象,例如

fvs = imutils.video.FileVideoStream(args.input).start()

while fvs.more():

  frame = fvs.read()

  try:
    
    grayframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

  except cv2.error as e:
    
    # inspect error object
    print(e)
    for k in dir(e):
      if k[0:2] != "__":
        print("e.%s = %s" % (k, getattr(e, k)))

    # handle error: empty frame
    if e.err == "!_src.empty()":
      break # break the while loop
Run Code Online (Sandbox Code Playgroud)