【问题标题】:VideoCapture can open a video but then after some second or minute cap.read​() keeps returning falseVideoCapture 可以打开视频,但在几秒或几分钟后 cap.read​() 一直返回 false
【发布时间】:2021-04-26 20:08:42
【问题描述】:

在访问实时流式传输网络摄像机时。 VideoCapture 可以打开视频,但几秒钟或几分钟后无法阅读。 cap.read​() 不断返回 false 并且框架在一段时间后没有。 那台相机的 FPS 是 180000。这太高了。

Python-> 3.8.5(默认,2020 年 7 月 28 日,12:59:40) [GCC 9.3.0] 在 Linux 上 操作系统 - Ubuntu(18.04 或 20.04) OpenCV - 4.4.0 opencv-contrib-python==4.4.0.46

【问题讨论】:

  • 在收到错误返回后,您多久尝试阅读更多帧?我见过相机在大约 200 次故障后又能正常工作。
  • 它给了我错误的回报,直到我重新开始这个过程。

标签: python-3.x opencv video-streaming live-streaming ip-camera


【解决方案1】:

这有点像是每个人在使用带有 IP 摄像机的 opencv 时偶尔会遇到的问题。您可以通过检查 cap.read() 是否返回 false 并在它发生时关闭并重新打开流来回避问题(如果在关闭和重新打开后仍然出现问题,那么实际上存在连接问题,而不仅仅是 opencv) .

【讨论】:

  • 它给出错误的回报,直到我重新启动该过程。我在同一个地方和同一个网络上有两个 IP 摄像机。此问题仅发生在具有非常高 FPS 速率 = 180000 的相机上。第二台相机仅给我 20 FPS 速率。
  • 我想不出一个合理的答案来解释为什么重新启动进程与关闭并重新打开 VideoCapture 会有不同的效果。那里可能有一些我不熟悉的 OpenCV 黑盒魔法。关闭 VideoCapture 后,是否可以尝试休眠 60 秒后再重新打开?如果解决这个问题的唯一方法是重新启动进程,那么您可以使用多处理模块来完成。
【解决方案2】:

here,openCV 似乎在非 USB 摄像头上存在问题。当 opencv 无法读取相机属性时,报告的 fps 可能是默认值。

【讨论】:

    猜你喜欢
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2012-07-14
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多