'CV2: "[ WARN:0] terminating async callback" when attempting to take a picture

I am trying to take a picture from the defualt carmera with python, to do this I am using openCV (import cv2 from python shell). However, when I attempt to disable the camera it closes but with the error [ WARN:0] terminating async callback.

This is code I am trying to run:

import cv2

camera_port = 0
camera = cv2.VideoCapture(camera_port)
return_value, image = camera.read()
cv2.imwrite("image.png", image)

camera.release() # Error is here

The code outputs the desired result- it takes a saves an image but I do not understand why the error message occures or how to remove it



Solution 1:[1]

I had the same warning. Just modify the line camera = cv2.VideoCapture(camera_port) to camera = cv2.VideoCapture(camera_port, cv2.CAP_DSHOW) and add cv2.destroyAllWindows() as the last line of your code.

Solution 2:[2]

It's probably showing a warning because you're not releasing the handle to the webcam.

try adding this to the end of the code

camera.release()
cv2.destroyAllWindows()

I hope this helps!

Solution 3:[3]

camera = cv2.VideoCapture(camera_port,cv2.CAP_DSHOW)

cv2.destroyAllWindows()

Solution 4:[4]

I did this & I don't see that warning there after.(only for Windows OS)

Open cmd and type:

setx OPENCV_VIDEOIO_PRIORITY_MSMF 0

Solution 5:[5]

This seems to be a bug in MSMF backend of opencv.

If you are using windows then you can change the backend to DirectShow backend.

So, change VideoCapture like this:

captureDevice = cv2.VideoCapture(0, cv2.CAP_DSHOW)

Solution 6:[6]

It works for me as indicated Sumit Kumar


camera_port = 0
#camera = cv2.VideoCapture(camera_port)
camera = cv2.VideoCapture(camera_port,cv2.CAP_DSHOW)
# Check if the webcam is opened correctly
if not camera.isOpened():
    raise IOError("Cannot open webcam")

return_value, image = camera.read()
print("We take a picture of you, check the folder")
cv2.imwrite("image.png", image)

camera.release() # Error is here
cv2.destroyAllWindows()

Solution 7:[7]

  1. first:add cv2.destroyAllWindows()
  2. second:the camera permission you have banned,and then check it.

Solution 8:[8]

camera = cv2.VideoCapture(camera_port, cv2.CAP_DSHOW) # Added cv2.CAP_DSHOW
return_value, image = camera.read()
cv2.imwrite("image.png", image)
camera.release()
cv2.destroyAllWindows() # Handles the releasing of the camera accordingly

Solution 9:[9]

hey guys found the solution pip install opencv-contrib-python==3.4.7.28 try like this we have to specifically say the version try lesser version mine was 4.x so I did and no error popped up

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sociopath
Solution 2 Aprajita Verma
Solution 3 Dimitry Ernot
Solution 4 Suraj Kumar
Solution 5 Codemaker
Solution 6 Joe Llerena
Solution 7
Solution 8
Solution 9 ARUN AK