Обычный способ создания VideoCapture заключается в следующем:Создание OpenCV VideoCapture от имени интерфейса вместо номеров камер
cam = cv2.VideoCapture(n)
где п соответствует числу /dev/video0
, dev/video1
Но так как я m строя робота, который использует несколько камер для разных вещей, мне нужно было убедиться, что он был назначен правильной камере, я создал правила udev, которые создали устройства с символическими ссылками на правильный порт всякий раз, когда была подключена конкретная камера.
Они, кажется, работает, потому что, когда я смотрю в каталог /dev
я могу увидеть ссылку:
/dev/front_cam -> video1
Однако я не знаю, как на самом деле использовать это сейчас.
Я думал, что могу просто открыть его из имени файла, как если бы это было видео, но cam = cv2.VideoCapture('/dev/front_cam')
не работает.
Ни делает cv2.VideoCapture('/dev/video1')
Он не бросает ошибку, она возвращает объект видеозахвата, только не один, который открыл (cam.isOpened()
возвращается False
).
Вы можете прочитать символическую ссылку из своей программы, чтобы программно вывести строку '/ dev/video1'? Если да, можете ли вы извлечь номер из этой строки (1) и отправить его в объект захвата openCV? – Micka
Я одобрил ваш вопрос, хороший вопрос, я думаю. – mertyildiran