使用python openCV从IP摄像机进行流式处理时出现问题

使用python openCV从IP摄像机进行流式处理时出现问题,python,opencv,Python,Opencv,在问这个问题之前,我在过去的两天里搜索了一个类似的问题,但是我没有找到适合我的问题 我有一个IP摄像机,它的IP地址、用户名等都是我可以完全访问的。通过将IP写入VLC播放器>>开放网络流>>网络,我实际上可以打开流并实时观看 但是我想要的是能够用python观看相同的实时流。这是我的密码: import urllib.request import cv2 import numpy url = 'rtsp://10.10.111.200/profile2/media.smp' while Tr

在问这个问题之前,我在过去的两天里搜索了一个类似的问题,但是我没有找到适合我的问题

我有一个IP摄像机,它的IP地址、用户名等都是我可以完全访问的。通过将IP写入
VLC播放器>>开放网络流>>网络
,我实际上可以打开流并实时观看

但是我想要的是能够用python观看相同的实时流。这是我的密码:

import urllib.request
import cv2
import numpy

url = 'rtsp://10.10.111.200/profile2/media.smp'
while True:
    resp = urllib.request.urlopen(url)
    b_array = bytearray(resp.read())
    img_np = numpy.array(b_array, dtype=numpy.uint8)
    img = cv2.imdecode(img_np, -1)
    cv2.imshow('test', img)
    if cv2.waitkey(10) == ord('q'):
        exit(0)
当我运行此代码时,它给出以下错误:

urllib.error.URLEROR:

然后我想也许我应该在url中将
rtsp
更改为
http
,但当我这样做时,它会给我以下错误

cv2.2错误:OpenCV(3.4.3) D:\Build\OpenCV\OpenCV-3.4.3\modules\imgcodecs\src\loadsave.cpp:737: 错误:(-215:断言失败)!中的buf.empty()和&buf.isContinuous() img=cv2.imdecode(img\u np, -(一)

我认为这是因为没有数据来自(很可能是错误的,因为我改为http)源


我使用的是Windows 10 64位。

用于读取数据流的库不支持rtsp协议,因此它将永远无法工作,或许您可以使用以下替代方法:

import cv2

capture_video = cv2.VideoCapture('rtsp://10.10.111.200/profile2/media.smp')
while(True):
    ret, img = capture_video.read()
    cv2.imshow('Test', img)
    if cv2.waitKey(10) == ord('q'):
        exit(0)

谢谢你的回答和编辑。它起作用了。但它需要很多时间来启动,一旦启动,它就会不断冻结。你能提出一些建议来加速这个过程(带来帧)吗?我用这个演示流尝试了相同的代码rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov 它工作正常,所以如果它对你来说冻结了,可能是网络问题?另外,检查这个例子,它使用多个线程来提高FPS速率:起初我还以为这是网络问题,但网络似乎很好。不过,我将使用线程来提高FPS速率。谢谢。