使用python openCV从IP摄像机流式传输问题

时间:2018-10-02 07:11:00

标签: python opencv

在问这个问题之前,我在过去的两天里在网站上搜索了类似的问题,但是找不到适合我的问题。

我有一个IP摄像机,其IP地址,用户名等已被授予完全访问权限。通过将IP写入VLC Player >> Open Network Stream >> Network,我实际上可以打开流并观看直播。

但是我想要的是能够使用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.URLError:。

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

  

cv2.error: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_np,行中的函数'cv :: imdecode_'   -1)

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

我在Windows 10 64位系统上。

1 个答案:

答案 0 :(得分:1)

您用于读取数据流的库不支持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)