gpt4 book ai didi

opencv - OpenCV如何获取实时帧而不是下一帧?

转载 作者:行者123 更新时间:2023-12-02 17:19:16 30 4
gpt4 key购买 nike

我意识到,当我使用OpenCV在rtsp网址中抓取视频(cv2.VideoCapture('rtsp:// ...'))时,实际上是在获取流的每一帧,而不是实时帧。
示例:如果视频具有30fps和10秒长,如果我获得第一帧并等待一秒钟以获取下一帧,那么我得到的是帧号2,而不是实时帧(它应该是帧号30或31)。
我担心这些问题,因为如果我的代码花费更长的时间进行视频处理(深度学习卷积),则结果总是会在以后而不是实时地交付。
从rtsp捕获时,我如何设法始终获取当前帧?
谢谢!

最佳答案

这与代码无关。许多IP摄像机为您提供编码输出(H.265 / H.264)。
使用VideoCapture()时,CPU会解码摄像机的输出数据。如您提到的那样,获得延迟(例如1秒至2秒)是正常的。
可以做些什么来使其更快:

  • 如果您具有GPU硬件,则可以通过其解码数据。这个
    会给您非常好的结果(根据使用经验
    NVIDIA gpus的最新版本:您将获得将近25毫秒的时间
    延迟)要在您的代码上实现此目标,您需要:
  • CUDA安装
  • 启用CUDA的OpenCV安装
  • OpenCV的
  • VideoReader class

  • 您可以将VideoCapture()与FFMPEG标志一起使用,FFMPEG具有高级方法来解码编码数据,这可能会为您提供CPU可获得的最快输出。 但这不会减少太多时间。
  • 关于opencv - OpenCV如何获取实时帧而不是下一帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63045053/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com