27

If I get OpenCV Error: ...

what's the syntax to catch it since OpenCV Error uses two words? I'm able to catch the following cv.error but how would I catch this?

EDIT:

I don't get it... is the answer obvious? Am I being unclear?

EDIT 2

I can't reproduce it b/c I'm on a different computer but it looked similar to:

OpenCV Error: Bad argument. Something something array

cv.error: This is another error

I'm able to catch cv.error but not OpenCV Error with the following:

try:
    # do a thing
except (cv.error, OpenCV Error):
    print "Can't do the thing"
    sys.exit(1)
user1136342
  • 4,731
  • 10
  • 30
  • 40
  • What is the exception raised when you run into this OpenCV Error? – Makoto Jan 15 '12 at 22:44
  • Yes, you're being very unclear. Please explain your problem more clearly. Unfortunately I can't tell you specifically what you should improve in your question, because I don't understand it at all. – Petr Viktorin Jan 15 '12 at 22:47
  • Post the traceback, and if possible the exceptional code – wim Jan 15 '12 at 22:53
  • 2
    Some OpenCV functions don't throw errors, they print out a message and exit the program (either with exit or abort, I can't remember). In other words, there are some errors that can't be caught. – Chris Eberle Jan 16 '12 at 00:50

2 Answers2

40

Try cv2.error.

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

Here's the page from the documentation but it's only for the C/C++ interface -- I can't find anything on the Python error handling for OpenCV (I find the documentation for the Python interface to be sadly lacking).

mathematical.coffee
  • 55,977
  • 11
  • 154
  • 194
5

you can easily inspect the error object, like

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
milahu
  • 2,447
  • 1
  • 18
  • 25