如何使用 opencv VideoCapture 方法获取实时帧?
Posted
技术标签:
【中文标题】如何使用 opencv VideoCapture 方法获取实时帧?【英文标题】:How to get realtime frames using opencv VideoCapture method? 【发布时间】:2021-12-28 23:45:30 【问题描述】:我的 Opencv 是 4.5.4 版,使用 gstreamer lib 编译。
在我的情况下,我收到了流媒体视频的帧。流式视频时间和获取视频时间(cv2.VideoCapture)之间存在差距。如果通过流式传输下一个视频,cv2.VideoCapture 不会获得下一个流式视频的帧,因为 opencv 没有到达最后一帧。
我该如何解决? (当我使用opencv 3.4.0版本时,我没有遇到这个问题。)
我的代码(不使用多进程/线程)
def connect_streaming(rtsp_url):
while True:
video_cap = cv2.VideoCapture(rtsp_url, cv2.CAP_GSTREAMER)
while video_cap.isOpened():
ret, frame = video_cap.read()
if not ret:
video_cap.release()
break
...
【问题讨论】:
您没有显示任何代码,因此很难看出会出现什么问题。也许您需要多线程或多进程? 如果它在以前的版本中工作,那么也许你应该把它作为问题发送给作者。 【参考方案1】:我解决了。 我认为这是使用线程获取流视频帧的最佳方式。
我希望很多人,面临同样的问题,阅读后解决问题。
【讨论】:
以上是关于如何使用 opencv VideoCapture 方法获取实时帧?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上的 OpenCV 中旋转 VideoCapture
OpenCV/Python:使用 VideoCapture 读取特定帧