OpenCV Python Rtsp流

时间:2017-07-04 08:38:14

标签: opencv

我想使用rtsp从IP摄像机流式传输视频。但我遇到了问题。我已经安装了先决条件。另外,我的rtsp链接适用于Vlc播放​​器。但是当我在编辑器中尝试并运行它时,它说无法找到相机 这是我的代码。

Action<NamedPipeServerStream> sendDataUsingPipe = stream =>
        {
            foreach (var imageBytes in data)
            {
                using (var image = Image.FromStream(new MemoryStream(imageBytes)))
                {
                    image.Save(stream, ImageFormat.Jpeg);
                }
            }
        };

帽= cv2.VideoCapture( “rtsp://形式管理员:admin@xxx.xxx.xxx.xxx:XXX /媒体/ VIDEO1 /视频”)

import cv2

import numpy as np

2 个答案:

答案 0 :(得分:2)

请检查您的opencv安装是否有能力打开视频。为此尝试

            var rpoint = e.GetCurrentPoint(this).Position.ToVector2();


        // Invert the display transform, to convert pointer positions into simulation rendertarget space.
        Matrix3x2 Mtransform;
        Matrix3x2.Invert(transform, out Mtransform);

        var xpoint = Vector2.Transform(rpoint, Mtransform);

        // 사각형 길을 보여주기  
        if ((xpoint.X > wizardPosition.X - 64) && (xpoint.X < wizardPosition.X + 64) && (xpoint.Y > wizardPosition.Y - 150) && (xpoint.Y < wizardPosition.Y + 42) )
        {
            if (ShowBorder == true) { ShowBorder = false; }

             else if (ShowBorder == false)
                ShowBorder = true; 
        }

如果cap=cv2.VideoCapture(r"path/to/video/file") ret,img=cap.read() print ret ret,则您的opencv安装具有处理视频所需的编解码器,然后确认RTSP地址是否正确。

如果Trueret,请使用steps here重新安装opencv。我建议从源代码构建opencv。但首先尝试预先构建的库。

答案 1 :(得分:1)

通过设置以下环境变量,我能够解决在Python中使用OpenCV(使用FFMPEG构建)打开RTSP流的问题:

import os
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp"

FFMPEG默认为TCP传输,但是某些RTSP提要是UDP,因此这为FFMPEG设置了正确的模式。

然后使用:

cv2.VideoCapture(<stream URI>, cv2.CAP_FFMPEG)

ret, frame = cap.read()

while ret:
    cv2.imshow('frame', frame)
    # do other processing on frame...

    ret, frame = cap.read()
    if (cv2.waitKey(1) & 0xFF == ord('q')):
        break

cap.release()
cv2.destroyAllWindows()

照常。