我如何选择我想要处理的帧和帧数?



我正在研究对象检测,但实时检测非常慢。为了避免对每一帧都进行处理我只想从每30帧中选取前5帧然后用这5帧处理一个特定的函数然后再选取3帧用于我的目标检测模型。我是OpenCV的新手,所以请告诉我如何实现这一点?

既然您提到了实时,我就假定您是从相机捕获的。在这种情况下,您可以读取帧,以便将间歇性帧转储,如下面的示例所示。请注意,这与实时保持一致,即使引入了延迟。因此,在这种情况下,您不必选择处理哪些帧,您只需处理单个帧,然后返回视频源并获得最新的帧。

如果你需要处理每一帧,那么考虑@Micka对你的问题的评论。这是一篇关于创建一个高效的帧队列的好文章。

import cv2
import time
cap = cv2.VideoCapture(0)
while(True):
    # Get frame: notice that you get the most recent frame
    # The frames you miss get dumped
    ret, frame = cap.read()
    # peform some slow operation
    time.sleep(1)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

相关内容

最新更新