Я получил:
[ ПРЕДУПРЕЖДЕНИЕ: [email protected]] global /tmp/pip-wheel-5v2wouk5/opencv-contrib-python_f04c010cf0414c5a81144576b45aa287/opencv/modules/videoio/src/cap_v4l.cpp (889) open VIDEOIO(V4L2:/dev/video0): can' t открыть камеру по индексу
при развертывании контейнера Docker на Raspberry Pi 4B (Debian). Вторая строка — это источник предупреждения:
def __init__(self, path, queueSize=3):
self.stream = cv2.VideoCapture(path) #<--- here the warning pops up. path == 0 here.
print("path: ", path)
print("self.stream of cv2.VideoCapture(path) ", self.stream)
self.stopped = False
self.Q = Queue(maxsize=queueSize)
Контейнер Docker развертывается на устройстве путем его первой сборки в Visual Studio, а затем его отправки в реестр контейнеров Azure следующим образом:
docker build --rm -f "c:"my_path"\arm32v7.Dockerfile" -t "my_crname".azurecr.io/cameracapture:0.2.11-arm32v7 "c:... ; if ($?) { docker push "my_crname".azurecr.io/cameracapture:0.2.11-arm32v7 } if ($?) { docker build --rm -f "c:"my_path"\arm32v7.Dockerfile" -t "my_crname".azurecr.io/ imageclassifierservice:0.2.17-arm32v7 "c:"my_path"" } if ($?) { docker push "my_crname".azurecr.io/imageclassifierservice:0.2.17-arm32v7 }
после этого он «развертывается на одном устройстве» в Visual Studio через файл конфигурации (deployment.json).
У Docker есть разрешения на доступ к встроенной камере модуля камеры 3, установленной в /dev/video0:
sudo nano /etc/udev/rules.d/99-camera.rules
SUBSYSTEM= = "vchiq",MODE = "0666"
Я попробовал изменить 0 на -1 и 1 в cv2.VideoCapture(path). Я снова подключил камеру, перезагрузился и обновил Raspberry Pi. Я попробовал включить/отключить устаревшую камеру с помощью sudo raspi-config. sudo ls/dev grep | video показывает video0.
Как решить эту проблему?
Спасибо, что дал мне знать. Я обновил свой вопрос соответственно.
@JacobVermeule - это приложение/код, работающий локально с преобразованием в докер?
@Sampath спасибо за ответ! Мне удалось заставить его работать, изменив код на cap = cv2.VideoCapture(index, cv2.CAP_V4L). Я уже видел это решение на stackoverflow.com/questions/66440070/…, но после исследования этой функции я подумал, что это только работало для устройств на базе Windows, но, видимо, работает и для устройств на базе Linux. В любом случае спасибо за помощь.






Мне удалось заставить его работать, изменив код на
cap = cv2.VideoCapture(индекс, cv2.CAP_V4L)
Я видел это решение уже по адресу:
Камера Raspberry Pi и OpenCV: невозможно открыть камеру по индексу
но после изучения этой функции я подумал, что это работает только для устройств на базе Windows, но, видимо, это работает и для устройств на базе Linux.
Вы не показываете, как вы запустили докер.