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)
cv2 (old interface in old OpenCV versions was named as cv ) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet.
read() in OpenCV returns 2 things, boolean and data. If there are not 2 variables, a tuple will be assigned to one variable. The boolean is mostly used for error catching.
cv2 is the module import name for opencv-python, "Unofficial pre-built CPU-only OpenCV packages for Python". The traditional OpenCV has many complicated steps involving building the module from scratch, which is unnecessary. I would recommend remaining with the opencv-python library.
All you have do is to define a callback function in the OpenCV C++ code attaching to the OpenCV window. That callback function will be called every time, mouse events occur. That callback function will also give the coordinates of the mouse events. (e.g - (x, y) coordinate of a mouse click).
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).
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With