Python 使用cv2.VideoCapture()从IP摄像头读取流

Python 使用cv2.VideoCapture()从IP摄像头读取流,python,opencv,Python,Opencv,参考这个类似的问题,我能够通过使用请求,从IP摄像头读取流: stream = requests.get('http://<user>:<pass>@<addr>:<port>/videostream.cgi', stream=True) bytez = '' while True: bytez += stream.raw.read(16384) ... 但没能得到任何东西,除了关于空帧的异常 如何使用cv2.VideoCapt

参考这个类似的问题,我能够通过使用
请求
,从IP摄像头读取流:

stream = requests.get('http://<user>:<pass>@<addr>:<port>/videostream.cgi', stream=True)

bytez = ''
while True:
    bytez += stream.raw.read(16384)
    ...
但没能得到任何东西,除了关于空帧的异常


如何使用cv2.VideoCapture()读取IP摄像头流?

我还没有尝试从VideoCapture访问IP摄像头,但使用您的方法
cap=cv2.VideoCapture()
视频捕获需要一个代表摄像机的数字,通常
0


如果将其保留为空,则不会访问任何摄影机,因此空帧会出现异常(即使稍后声明
cap.open()
,openCV已尝试打开摄影机并确定该摄影机为空)

将C:\OpenCV\3rdparty\ffmpeg\添加到Windows PATH环境变量,或将OpenCV\u ffmpeg.dll从该目录复制到C:\Python27。这个问题已经在这个问题中得到了回答

在您的
cap=cv2.VideoCapture()行中传递相机的位置:

cap = cv2.VideoCapture('http://<user>:<pass>@<addr>:<port>/videostream.cgi?.mjpg')
cap=cv2.VideoCapture('http://:@:/videostream.cgi?.mjpg'))
OpenCV:out device of bound(0-0):1。。。除非我通过0,这是笔记本电脑摄像头。ifconfig显示en7上存在摄像头。
cap = cv2.VideoCapture('http://<user>:<pass>@<addr>:<port>/videostream.cgi?.mjpg')