我正在执行一些实时计算机视觉工作,例如实时流检测。
检测部分大约需要0.3s /帧。 但是视频的FPS较高,可能为15或30 FPS。
所以,在我现在的工作中,我使用
cap = cv2.VideoCapture("rtsp url")
ret, frame = cap.read()
获取第一帧,然后在检测过程之后,获取新帧并进行检测。
但是检测过程大约需要0.3s,
那么完成检测(0.3s)后如何获得当前帧?
不是刚检测到帧。
答案 0 :(得分:0)
您好,先生,我了解您的问题,可以解释如下。
我认为您的问题是,当前检测过程正在阻止您的主要过程。这使得当前帧不是(X + t)而是(X + 1)。
所以您在这里有2个选择:
请勿将视频捕获过程和检测过程分开。而是设置下一个阅读框的位置。这很容易。视频文件位于:https://docs.opencv.org/3.1.0/d8/dfe/classcv_1_1VideoCapture.html#a8c6d8c2d37505b5ca61ffd4bb54e9a7c
计算下一帧位置
t = ....
设置框架位置
cap.set(cv2.CAP_PROP_POS_FRAMES,t)
ret,frame = cap.read()
希望有帮助