cvQueryFrame是否提前为帧设置了缓冲区?
Does cvQueryFrame have buffer for frames in advance?
如果我这样做了:
while(1) {
//retrieve image from the camera
webCamImage=cvQueryFrame(camera) // where 'camera' is cvCreateCameraCapture(0)
//do some heavy processing on the image that may take around half a second
funcA()
}
现在,当我去连续迭代,它似乎webCamImage滞后!
即使我移动相机,webCamImage也需要很长时间才能更新到新的视场,并且它会继续显示和处理以前的视场相机帧。
我假设cvQuery有一些检索帧的缓冲区。
你能告诉我如何在每次迭代中获得更新的相机视图吗?
多谢
cvQueryFrame
只是一个调用其他2个函数的包装器:cvGrabFrame
,它从相机中非常快速地获取数据,cvRetrieveFrame
,它解压缩该数据并将其放入IplImage
。如果您需要立即捕获帧,只需捕获帧,并检索它以供稍后处理。
参见http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_highgui.htm FMI
话虽如此,但我在典型的网络摄像头上使用cvQueryFrame
,我可以毫不费力地获得每秒几十帧的图像。是否有可能滞后的部分实际上在您的funcA()
调用中?编辑:从你的代码中的评论,我看到funcA()
确实是慢的部分。如果执行时间为半秒,则每半秒只能从cvQUeryFrame
获得一个新帧,正如您所描述的那样。试着让funcA
更快,或者把它放在一个单独的线程。
,友情提醒,cvQueryFrame
/cvRetrieveFrame
返回的IplImage
不能被用户修改或删除;它是OpenCV存储东西的内部系统的一部分,如果你想用它做任何有趣的事情,你应该做一个拷贝。我不知道你是否已经这样做了,但我一开始肯定做错了。
相关文章:
- Vulkan 中的动态顶点缓冲区格式设置
- 在 Linux 中存储区域设置名称的缓冲区大小应该是多少?
- 设置缓冲区参数时CL_INVALID_ARG_VALUE
- Vulkan:为什么主命令缓冲区和辅助命令缓冲区都需要设置帧缓冲区和渲染过程
- GLSL 计算着色器 使用查找表设置缓冲区会导致不写入任何数据,与其他数据设置相同的缓冲区有效
- 通过行和列设置控制台屏幕尺寸和屏幕缓冲区
- 将ITOA与整数一起使用.设置缓冲区的限制
- 如何为文本和箱缓冲区设置 WSABUF.buf
- stringstream->rdbuf()->pubsetbuf 未设置缓冲区
- 如何在 Node.js 中设置最大缓冲区大小
- 谷歌协议缓冲区,如何设置自定义类型的字段
- GetDIBits 将图像缓冲区设置为所有 0(全黑)
- 正在将缓冲区/指针设置为null
- 如何确定/设置套接字缓冲区大小
- Qt - 如何设置音频播放从缓冲区的开头开始
- setsockopt() 在设置大套接字 recv 缓冲区时不返回错误
- 在谷歌协议缓冲区中设置重复字段时出错
- 当在emacs中设置断点时,源缓冲区被隐藏
- glGenBuffers 不设置缓冲区
- 使用按位或代替std::max来设置缓冲区大小