【问题标题】:URL Video Stream of IP CameraIP 摄像机的 URL 视频流
【发布时间】:2018-04-24 09:53:55
【问题描述】:

我有一个 Teledyne Dalsa Genie Nano XL 摄像头:将其连接到 PC,它会分配以下 IP 地址:192.168.0.20

如何找到或设置摄像机的URL 视频流,以便通过标准的opencv 指令cap=cv2.VideoCapture('url') 访问其视频流?

我们将不胜感激任何帮助

【问题讨论】:

  • 那是一台 GigE Vision 工业相机,不是吗?通常,OpenCV 的标准版本不支持任何可以支持这些摄像头的 VideoIO 后端,您需要使用适当的 SDK 构建自己的。随着时间的推移,情况有所改善,但这些后端仍然只提供有限的功能——非常适合快速原型设计,但我发现直接使用 SDK(在我的情况下为 PVAPI)进行采集更好。
  • 使用额外的 VideoIO backends 重新构建 OpenCV 将需要一些工作,并且可能会挖掘 OpenCV 源代码,但结果不确定。就个人而言,我会使用 Dalsa SDK(我猜是 Sapera?)并查看 C++ 示例以找到一个显示基本抓取帧的示例,并编写一个简单的类来从相机获取图像。你似乎想要 Python,所以我会使用 Boost.Python 进行包装,将图像表示为 numpy 数组,就像 OpenCV 一样。
  • 非常感谢@DanMašek。非常感谢您的帮助,如果您觉得很好,我会向您介绍我在该方向上取得的进展,并可能分享代码和包装器,这些代码和包装器将对同一应用程序的其他人有用
  • 没问题,告诉我。 :)

标签: opencv url video-streaming ip-camera


【解决方案1】:

我假设您正在尝试通过 rtsp 从 IP 摄像机进行流式传输。所以,你可以通过这行代码来实现它:

Python 版本

cap = cv2.VideoCapture('rtsp://admin:admin@192.168.0.20:554/stream1 latency=0')

C++ 版本

cv::VideoCapture cap("rtsp://admin:admin@192.168.0.20:554/stream1 latency=0");

这里,第一个admin表示用于连接网络摄像头的username,第二个对应password。默认情况下,rtsp 连接使用 554 端口,但您可以参考您的相机文档进行仔细检查。

字符串:554/stream1 因您的相机品牌而异。因此,您应该检查您的手册以获取 rtsp 连接字符串。

参数latency=0 表示您想从相机流式传输,没有任何延迟。默认情况下,rtsp 连接会为缓冲区创建一个延迟(大约 2-5 秒),这会导致实际内容出现一些延迟。

【讨论】:

  • 事实并非如此:显然此设备不支持 rtsp 协议
  • 你怎么能这么肯定?您可以通过任何互联网浏览器连接到您的相机吗?
  • 显然没有:相机有 IP 但我无法从互联网浏览器以任何方式访问它。有这方面的经验吗?
  • 如果您只是在浏览器中输入相机 ip,那没有任何意义。您应该使用制造商定义的连接字符串通过浏览器进行连接。询问您的相机提供商。
  • 您有使用 Sapera ++ 的经验吗?这就是从相机中实际抓取帧所需要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多