我想使用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
答案 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地址是否正确。
如果True
为ret
,请使用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()
照常。