我正在尝试借助openCV从IP摄像机获取数据流。非docker应用程序在我的PC上运行良好,但是我需要在docker容器中运行它。这是我的Dockerfile:
FROM jjanzic/docker-python3-opencv
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["./CameraMan.py"]
src = 'rtsp://admin:....'
cap = cv2.VideoCapture(self.src)
cap.isOpened()
当我运行容器时,最后一行始终返回false。我想念什么?
最佳答案
看着https://hub.docker.com/r/jjanzic/docker-python3-opencv/dockerfile;没有(29.6.2020)
-D WITH_FFMPEG=ON \
使用FFMPEG ON
,opencv
可以读取您的相机。还有另一种选择:对于
RTSP
ip摄像机opencv
创建gstreamer
管道。您需要在dockerfile
中包括它的相关库。包括这些库以访问gstreamer
头文件: libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
然后添加所有这些:https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c#install-gstreamer-on-ubuntu-or-debian
那么您必须打开
gstreamer
中的cmake
: -D WITH_GSTREAMER=ON \
和build
。两者都是
ON
时,您还可以选择:cap = cv2.VideoCapture(src,cv2.CAP_FFMPEG )
要么cap = cv2.VideoCapture(src, cv2.CAP_GSTREAMER)
关于python - 如何从docker容器连接到rtsp相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60612601/