参考这个类似的问题How to parse mjpeg http stream from ip camera? 我能够使用requests以下命令从 IP 摄像机读取流:
stream = requests.get('http://<user>:<pass>@<addr>:<port>/videostream.cgi', stream=True)
bytez = ''
while True:
bytez += stream.raw.read(16384)
...
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但想通过使用cv2.VideoCapture()请求来实现。
我尝试了以下方式的变化:
cap = cv2.VideoCapture()
cap.open('http://<user>:<pass>@<addr>:<port>/videostream.cgi?.mjpg')
while(True):
ret, frame = cap.read()
...
Run Code Online (Sandbox Code Playgroud)
但无法得到任何东西,但关于空帧的异常。
如何使用 cv2.VideoCapture() 读取 IP 摄像机流?
将 C:\OpenCV\3rdparty\ffmpeg\ 添加到 Windows PATH 环境变量,或将 opencv_ffmpeg.dll 从该目录复制到 C:\Python27。这个问题已在OpenCV 2.4 VideoCapture not work on Windows中得到回答