CV2: «[WARN: 0] прерывание асинхронного обратного вызова» при попытке сделать снимок - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь сделать снимок с defualt carmera с помощью python, для этого я использую openCV (import cv2 из оболочки python).Однако, когда я пытаюсь отключить камеру, она закрывается, но с ошибкой [ WARN:0] terminating async callback.

Это код, который я пытаюсь запустить:

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

Код выводит желаемый результат - требуется сохранить изображение, но я не понимаю, почему появляется сообщение об ошибке или какудалить его

Ответы [ 6 ]

0 голосов
/ 01 июля 2019

У меня было такое же предупреждение.Просто измените строку camera = cv2.VideoCapture (camera_port) на camera = cv2.VideoCapture (camera_port, cv2.CAP_DSHOW) и добавьте cv2.destroyAllWindows () как последняя строка вашего кода.

0 голосов
/ 18 апреля 2019

Это работает для меня, как указано Сумит Кумар


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()
0 голосов
/ 12 марта 2019
camera = cv2.VideoCapture(camera_port,cv2.CAP_DSHOW)

cv2.destroyAllWindows()
0 голосов
/ 08 февраля 2019

Я сделал это и не вижу там этого предупреждения (только для ОС Windows)

Откройте cmd и введите:

setx OPENCV_VIDEOIO_PRIORITY_MSMF 0
0 голосов
/ 07 января 2019
  1. first: добавьте cv2.destroyAllWindows()
  2. second: разрешение камеры, которое вы заблокировали, а затем проверьте его.
0 голосов
/ 04 января 2019

Возможно, отображается предупреждение, потому что вы не отпускаете дескриптор веб-камеры.

попробуйте добавить это в конец кода

camera.release()
cv2.destroyAllWindows()

Надеюсь, это поможет!

...