如何在Python中捕获“OpenCV错误”

29 投票
2 回答
32828 浏览
提问于 2025-04-17 10:19

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

那么怎么写代码来捕捉这个错误呢?因为 OpenCV 错误是两个单词组成的。我可以捕捉到 cv.error,但这个我该怎么处理呢?

编辑:

我不太明白...答案是不是很明显?我是不是表达得不够清楚?

编辑 2

我在另一台电脑上无法重现这个错误,但看起来类似于:

OpenCV Error: Bad argument. Something something array

cv.error: This is another error

我可以捕捉到 cv.error,但无法用以下代码捕捉到 OpenCV Error:

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

相关问题:

2 个回答

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
44

试试 cv2.error

try:
    ...
except cv2.error as e:
    ...

这里是文档的页面,不过它只适用于C/C++接口——我找不到关于OpenCV的Python错误处理的任何信息(我觉得Python接口的文档实在是太少了)。

撰写回答