kinect for windows - DepthBasics-D2D详解之三
这篇文章我们将总结一下,之前两篇文章中提到的Kinect SDK的函数接。
函数接口:
NuiGetSensorCount: 获取连接的Kinect设备个数
原型:_Check_return_ HRESULT NUIAPI NuiGetSensorCount( _In_ int * pCount );
解释:KinectSDK支持多个Kinect设备连接,这个函数能获取到Kinect设备个数。
返回值:返回S_OK是成功,其他失败,其中E_POINTER表示pCount是空指针错误。
NuiCreateSensorByIndex:通过索引创建INuiSensor对象
原型:_Check_return_ HRESULT NUIAPI NuiCreateSensorByIndex( _In_ int index, _Out_ INuiSensor ** ppNuiSensor );
解释:通过指定的下标,获取对应的KinectSensor对象
返回值:返回S_OK是成功,其他失败,错误码有:E_INVALIDARG(index是负数),E_NUI_BADINDEX(index超出范围),E_POINTER(ppNuiSensor是空指针)
NuiStatus:获取Kinect设备状态,它是INuiSensor的成员函数
原型:virtual HRESULT STDMETHODCALLTYPE NuiStatus( void) = 0;
解释:当获取到INuiSensor对象时,应该调用这个函数查看Kinect设备状态,如果状态不对,也是不能使用的。
返回值:返回S_OK是正常,其他失败,错误码如下:
| S_NUI_INITIALIZING | The device is connected, but still initializing.设备初始化中 |
| E_NUI_NOTCONNECTED | The device is not connected.设备未连接 |
| E_NUI_NOTGENUINE | The device is not a valid Kinect.不是一个正常的Kinect |
| E_NUI_NOTSUPPORTED | The device is an unsupported model.模式不支持 |
| E_NUI_INSUFFICIENTBANDWIDTH | The device is connected to a hub without the necessary bandwidth requirements.插到usb hub中产生的问题 |
| E_NUI_NOTPOWERED | The device is connected, but unpowered.没插电 |
| E_NUI_NOTREADY | There was some other unspecified error.未知错误 |
NuiInitialize:初始化Kinect设备
原型:virtual HRESULT STDMETHODCALLTYPE NuiInitialize(
/* [in] */ DWORD dwFlags) = 0;
参数:指定初始化模式
| Constant | Description |
|---|---|
| NUI_INITIALIZE_DEFAULT_HARDWARE_THREAD | This flag was deprecated in version 1.5; it is no longer used. |
| NUI_INITIALIZE_FLAG_USES_AUDIO | Initialize the sensor to provide audio data. |
| NUI_INITIALIZE_FLAG_USES_COLOR | Initialize the sensor to provide color data. |
| NUI_INITIALIZE_FLAG_USES_DEPTH | Initialize the sensor to provide depth data. |
| NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | Initialize the sensor to provide depth data with a player index. |
| NUI_INITIALIZE_FLAG_USES_SKELETON | Initialize the sensor to provide skeleton data. |
解释:一个设备只有第一次调用这个函数时候会成功,其他应用程序再调用这个函数会失败,也就是说一个设备只能给一个程序用。
返回值:S_OK成功,其他失败
NuiImageStreamOpen:打开Kinect流
原型: virtual HRESULT STDMETHODCALLTYPE NuiImageStreamOpen(
/* [in] */ NUI_IMAGE_TYPE eImageType, // 类型
/* [in] */ NUI_IMAGE_RESOLUTION eResolution, // 分辨率
/* [in] */ DWORD dwImageFrameFlags, // 帧事件选项
/* [in] */ DWORD dwFrameLimit, // kinect缓存的帧数量
/* [in] */ HANDLE hNextFrameEvent, // 手动reset的event,当下一帧数据到来时,kinect会reset它
/* [out] */ HANDLE *phStreamHandle) = 0; // 数据流句柄
返回值:S_OK表示成功,其他失败
| Error | Description |
|---|---|
| E_FAIL | An unspecified error occurred. |
| E_INVALIDARG | The value of the dwFlags parameter is NULL. |
| E_NUI_DEVICE_NOT_READY | Kinect has not been initialized. |
| E_OUTOFMEMORY | The allocation failed. |
| E_POINTER | The hNextFrameEvent parameter is an invalid handle. |
NuiImageStreamGetNextFrame:取一帧数据
原型:virtual HRESULT STDMETHODCALLTYPE NuiImageStreamGetNextFrame(
/* [in] */ HANDLE hStream, // 数据流
/* [in] */ DWORD dwMillisecondsToWait, // 等待时间
/* [retval][out] */ NUI_IMAGE_FRAME *pImageFrame) = 0; // 保存数据的指针
返回值:S_OK成功,其他失败
| Error | Description |
|---|---|
| S_FALSE | The waiting timeout expired before a frame was available and hStream was opened using the NUI_IMAGE_STREAM_FLAG_SUPPRESS_NO_FRAME_DATA flag. |
| E_INVALIDARG | The value of the hStream parameter is NULL. |
| E_NUI_FRAME_NO_DATA | The waiting timeout expired before a frame was available. |
| E_POINTER | The value of the pImageFrame parameter is NULL. |
NuiImageFrameGetDepthImagePixelFrameTexture:将深度图转化成纹理
原型:virtual HRESULT STDMETHODCALLTYPE NuiImageFrameGetDepthImagePixelFrameTexture(
/* [in] */ HANDLE hStream, // 数据流
/* [in] */ NUI_IMAGE_FRAME *pImageFrame, // 帧数据
/* [out] */ BOOL *pNearMode, // 近模式,如果kinect离物体比较近,一般就会选择近模式
/* [out] */ INuiFrameTexture **ppFrameTexture) = 0; // 输出参数,转换后的纹理
返回值:S_OK成功,其他失败
LockRect:锁住矩形区域数据,让Kinect不要修改那些数据
原型:virtual HRESULT STDMETHODCALLTYPE LockRect(
UINT Level, // 必须为0
NUI_LOCKED_RECT* pLockedRect, // 传出参数,记录矩形
RECT* pRect, // 该参数暂时不用
DWORD flags) = 0; // 该参数暂时不用
返回值:S_OK成功,其他失败
| Error | Description |
|---|---|
| E_INVALIDARG | The Level parameter is not zero. |
| E_OUTOFMEMORY | The texture buffer could not be allocated. |
| E_POINTER | The pLockedRect parameter is NULL or the texture has zero height. |
UnlockRect:解锁
原型:HRESULT UnlockRect(UINT level); // Level参数必须为0
返回值:S_OK成功,其他失败,可能的错误码为E_INVALIDARG(level参数不为0)
| Error | Description |
|---|---|
| S_FALSE | The waiting timeout expired before a frame was available and hStream was opened using the NUI_IMAGE_STREAM_FLAG_SUPPRESS_NO_FRAME_DATA flag. |
| E_INVALIDARG | The value of the hStream parameter is NULL. |
| E_NUI_FRAME_NO_DATA | The waiting timeout expired before a frame was available. |
| E_POINTER | The value of the pImageFrame parameter is NULL. |
kinect for windows - DepthBasics-D2D详解之三的更多相关文章
- Fragment详解之三——管理Fragment(1)
相关文章: 1.<Fragment详解之一--概述>2.<Fragment详解之二--基本使用方法>3.<Fragment详解之三--管理Fragment(1)>4 ...
- [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...
- windows socket函数详解
windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...
- Python调用windows下DLL详解
Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...
- redis.windows.conf配置详解
redis.windows.conf配置详解 转自:https://www.cnblogs.com/kreo/p/4423362.html # redis 配置文件示例 # 当你需要为某个配置项指定内 ...
- 重装Windows系统 入门详解 - 基础教程
重装Windows系统 入门详解 - 基础教程 JERRY_Z. ~ 2020 / 10 / 13 转载请注明出处!️ 目录 重装Windows系统 入门详解 - 基础教程 一.说明 二.具体步骤 ( ...
- windows 安装Git详解
windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...
- AOP详解之三-创建AOP代理后记,创建AOP代理
AOP详解之三-创建AOP代理后记,创建AOP代理. 上篇文章已经获取到了AOP的信息,接下来就是拿着这些AOP的信息去创建代理了. 首先我们看下创建AOP代理的入口处. //这个方法将返回代理类 p ...
- windows curl命令详解
概述 Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 软件下载 下载地址:https://cur ...
- 【JavaScript】windows.open用法详解
windows.open("URL","窗口名称","窗口外观设定");的用法详解 function onNewWindows(redire ...
随机推荐
- 使用sqlplus批量执行脚本的总结
当然,我们可以在plsql中执行,但是在实际生产环境中,可能更多的是使用简便的sqlplus.步骤如下: 1.登陆client sqlplus connect <username>/< ...
- Windows Server 中开启 SQL Server 2008 的1433端口
在Windows Server2008 服务器上部署了Microsofit SQL Server2008 R2 ,想让远程机器能够访问,于是开放1433端口,进行了如下设置: 1.打开“本地安全策略” ...
- PL/SQL编程要点和注意点
http://www.itpub.net/thread-1560427-3-1.html 1. 非关键字小写,关键字大写,用下划线分隔,用前缀区分变量与表列名.不强求变量初始值.2. 永远只捕获可预测 ...
- cocos2d-x学习日志(12) --弹出对话框的设计与实现
我们时常需要这么些功能,弹出一个层,给与用户一些提示,这也是一种模态窗口,在没有对当前对话框进行确认的时候,不能继续往下操作. 功能分析 我们设计一个对话框,对话框上有几个按钮(个数可定制),当然有个 ...
- wecenter—开启CURL扩展,让服务器支持PHP curl函数(远程采集)
curl().file_get_contents().snoopy.class.php这三个远程页面抓取或采集中用到的工具, 默迹还是侵向于用snoopy.class.php,因为他效率比较高且不需要 ...
- codeforces 650D. Zip-line 线段树
题目链接 题目的意思很简单, 就是给你n个数, m个询问, 每次询问修改某一个位置的值, 然后问你修改完之后数列的lis是多少. 询问独立. 对于原数列, 我们将它离散化, 令dp1[i]为以i为结尾 ...
- 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”
源自:http://www.cnblogs.com/yangbingqi/p/3328610.html 刚安装完CentOS,使用yum命令安装一些常用的软件,使用如下命令:yum grouplist ...
- MySQL 设置数据库的隔离级别
在会话级别设置隔离级别 1.read commited :set session transaction isolation level read committed; 2.repeatable re ...
- 【玩转Ubuntu】08. Linux报错:Syntax error: "(" unexpected解决办法
问题: 在MAC上写了一段shell脚本,放到Ubuntu上运行总是报下面这个错误,单步调试都是对的,就是直接运行会报错. bixiaopeng@ubuntu:~/package$ sh packag ...
- rsyslog 走tcp通讯配置
发送端: local5.* @@192.168.32.76 front-end:/usr/local/nginx/logs# cat /etc/rsyslog.conf 日志服务器端配置: # Pro ...