用于视频处理的图像缓冲区
image buffer for video processing
我想开发一个带有Qt和opencv的应用程序,以便处理来自相机的所有帧。我有 2 个 Qthread,一个用于捕获图像,另一个用于处理。处理线程有点慢,所以为了处理所有的帧,我需要有一个帧缓冲区。我真的不知道如何简单地弹帷幕帧缓冲区。任何帮助将不胜感激。
您需要
创建异步运行的线程。捕获映像时,使用捕获线程将其添加到std::queue
,然后让处理线程从队列中提取。尝试尽可能多地使用指针来减少图像的内存使用和处理时间。确保您是线程安全的,并在适当时使用std::Mutex
。
由于您使用的是 QT,因此您可以将 QQueue 用于队列,将 QMutex 用于互斥锁。
如果处理线程比帧捕获周期慢,这意味着您的代码最终会耗尽内存。您应该考虑降低捕获帧速率,丢帧或降低帧分辨率。
至于缓冲区,选择帧的线程安全循环队列,其中捕获线程将是生产者,处理线程将是使用者。如果队列已满(显然是(,您有两种选择:(1( 删除最旧的(但未处理的(并添加新的队列。(2(只需删除最新的框架,这很容易实现。
相关文章:
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 将图像魔术 blob 保存到节点缓冲区
- 优化图像缓冲区
- 有没有办法将两个输入图像堆叠到卤化物发生器中的单个 4 维缓冲区中?
- 使用 GTK 将 EGL 图像渲染到帧缓冲区
- 用于视频处理的图像缓冲区
- 如何将图像缓冲区传递到OpenCV垫子对象
- QT 无法从缓冲区加载图像
- 尝试为图像缓冲区分配内存时 ptr 值错误
- 将图像缓冲区保存到Android上的文件
- 在 Python 中使用 OpenCV 将打包的 BGRA 图像缓冲区转换为 RGB 时遇到问题
- 在amd64体系结构上的C++中,将图像缓冲区blit到另一个缓冲区的xy偏移中的最快方法
- 在不使用缓冲区的情况下对2个图像进行操作(加法、减法等)
- 如何使用LEADTOOLS 19将图像效果应用于内存缓冲区中的JPEG
- GetDIBits 将图像缓冲区设置为所有 0(全黑)
- turbojpeg-cpp中的realloc图像缓冲区
- 压缩原始图像缓冲区
- 使用wxWidgets在内存中绘制8位灰度图像缓冲区到屏幕
- 将图像缓冲区的指针传递给OpenCV并改变饱和度
- 在 std::d eque 图像缓冲区(OFX 插件)中使用 delete