Kinect2.0 MultiSourceFrameReader 的 AcquireLatestFrame 方法获取不到帧的解决方案
2024-08-31 02:04:34
先把大致要写的东西写一下,手里的活忙完了再完善。
在代码中使用下边的语句,获取Kinect中,colorFrame, depthFrame, bodyIndex三种帧,但是经常会遇到在后边的程序中处理三个帧之后,就无法再得到新的帧了。
hr = pMultiSourceFrameReader->AcquireLatestFrame(&pMultiSourceFrame);
原因大概是因为colorFrame太大了传输时间过长,或者是后续处理图片的时间过长,然后由于某些搞不懂的原因,在上边的代码中,hr的值总是: E_PENDING The data necessary to complete this operation is not yet available.
这里,在上边这句代码中加入下边这段,可以解决此问题。
while (FAILED(hr))
{
SafeRelease(pMultiSourceFrame);
SafeRelease(pMultiSourceFrameReader);
hr = pMyKinect->OpenMultiSourceFrameReader(FrameSourceTypes::FrameSourceTypes_Depth |
FrameSourceTypes::FrameSourceTypes_Color | FrameSourceTypes::FrameSourceTypes_BodyIndex,
&pMultiSourceFrameReader);
Sleep();
if (SUCCEEDED(hr))
{
hr = pMultiSourceFrameReader->AcquireLatestFrame(&pMultiSourceFrame);
} cout << "MultiSourceFrame" << rand() % << endl;
}
原理: 当获取不到帧时,先释放pMultiSourceFrame 和 pMultiSourceFrameReader 这两个资源,然后重新初始化,并获得帧。记得初始化之后,在读取帧的时候让程序Sleep一小段时间,不然由于时间太短,Kinect会反应不过来,仍然获取不到帧。
完整代码后续放出。
最新文章
- Flexible 弹性盒子模型之CSS flex-grow 属性
- ajax用get刷新页面元素在IE下无效解决~~
- JS原生第七篇 (帅哥)
- OPEN CASCADE Gauss Least Square
- Ogre碰撞检测
- 如何在ubuntu 12.04 中安装经典的 GNOME桌面
- An overview of the Spring MVC request flow
- C++11新特性:右值引用和转移构造函数
- Tornado,展示一下模板渲染
- css重点
- pyqt QTimer,QThread例子学习
- spring mvc 非注解形式
- 今天刚申请成为Uber司机 已经接了5单了....大家有什么想问的吗?
- Qt控件精讲一:按钮
- MySQL性能调优与架构设计
- W3CSchool闯关笔记(JQuery)
- The Best Books on Game Dev
- java日志的相关配置文件知识
- 安装win7出现安装程序无法创建新的系统分区
- Kotlin入门(12)类的概貌与构造
热门文章
- Python学习之参数
- thinkjs升级到3.0后的图片上传
- countUp.js-让数字动起来
- css3 box-shadow阴影(外阴影与外发光)
- 设计APP时我们该怎么做
- [LeetCode] Smallest Range 最小的范围
- Python学习【第26篇】:Python系列- 多线程(threading)
- python系列之 - 并发编程(进程池,线程池,协程)
- 跨域访问 - 跨域请求 同源策略概念对跨域请求的影响 及几种解决跨域请求的方法如 jsonp
- Java基础知识回顾之四 ----- 集合List、Map和Set