#python #opencv #error-handling #video-capture
#python #opencv #обработка ошибок #видеозахват
Вопрос:
При попытке реализовать базовую инструкцию try / except для получения кадров с камеры в Linux я заметил, что OpenCV не выдает ошибку, когда камера отсутствует или неверный индекс устройства; вместо этого он выводит предупреждение. Как я мог это уловить?
Пример:
import cv2
def foo(camera_index):
try:
cap = cv2.VideoCapture(camera_index)
except Exception:
print("Couldn't open camera at {}".format(camera_index))
Запуск foo(1) с рабочей камерой в /dev/video/0 приведет к печати:
WARN:0] global /tmp/pip-req-build-kne9u3r2/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
Тогда мое исключение бесполезно, потому что cv2 никогда не вызовет правильное исключение (хотя текст сообщения звучит как ошибка).
Ответ №1:
Вы не можете перехватить эти предупреждения, но вы можете проверить, был ли VideoCapture
объект успешно создан с помощью метода isOpened() .
В качестве примера:
cap = cv2.VideoCapture(camera_index)
if not cap.isOpened():
raise Exception("Couldn't open camera {}".format(camera_index))
Выполнение этой проверки после создания VideoCapture
объекта является распространенным шаблоном; смотрите Здесь другой пример.
Комментарии:
1. Отлично, это именно то, что мне было нужно. Спасибо 🙂