我有一个问题。 cvQueryFrame 究竟做了什么?据我了解,它会从缓冲区中“已捕获的帧”中选择一个帧,对吧?
在我的应用程序中,每一帧的处理时间为 1 秒,但我的相机的 fps 是 30fps。如何在 1 秒结束后/当当前帧的相关过程处理结束时拍摄下一张快照?我不想要旧镜框!
现在,正如我看到的第二次循环运行(当我再次调用 cvQueryFrame 时,它从缓冲区中检索将近 1 秒后捕获的帧。
我怎样才能实时完成所有事情??非常感谢任何帮助!!
最佳答案
它基本上会按顺序给你帧,所以无论处理多长时间,它都不会丢帧。请记住,该 API 还用于读取视频,在这种情况下它是有意义的。
您可以连续调用 cvQueryFrame 并在单独的线程上进行处理。或者,您可以使用系统 API(例如 DirectShow)或相机的 API 进行读取,这通常会使丢帧变得更容易。
关于opencv - cvQueryFrame 令人着迷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099374/