Kinect 总结---Kinect基本认识
玩了Kinect也有差不多一年的时间了,觉得Kinect是个挺好玩挺有未来的玩意。但是很经常做完了一次,下次又得重新看源码,没有把Kinect里的知识总结起来变为自己的知识,所以特意重新总结一下自己使用Kinect的心得
(备注Kinect版本为2.0,用的是Kinect官方的unity包,(Kinect-MS-sdk这个也是很不错的包,里面的demo比官方的还完善,但是不便于总结,所以先讲官方的SDK))。
1.Kinect原理:
kinect1:Prime Sense公司的Light Coding技术作为原理,给不可见光打码,然后检测打码后的光束,判断物体的方位。
kinect2:TOF原理(精度、灵敏度和分辨率都更高),根据光反射回来的时间判断物体的方位,当然检测光的飞行速度是几乎不能实现的,所以发射一道强弱随时间变化的正弦光束,然后计算其回来的相位差值,所以使用场景尽量避免反射物以及不要移动Kinect,不然会有问题。
2.可供研究开源库:Openni,KinectSDK,手势库NITE,Kinect-ms-sdk。由于我是新手,而且比较熟悉的Kinect的SDK,所以就从这个开始总结,其他的有机会再来详细分析。
3.首先你用Kinect,首先要了解它能干什么,能获得哪些数据
其实看他的SDK就知道它能获取的数据包括:语音,彩色图像,深度图像,骨骼数据(这个是根据深度和彩色通过算法识别提供给开发者使用的)。而又这几种数据又能扩展出什么新的数据,开发出什么有趣的功能完全是由开发者们的能力和对世界的好奇。(官方SDK已提供了表情,脸部建模,语音识别,手势判断等,其他的估计不会那么快提供出来)
4.Kinect的使用程序流程:
开始程序-获取kinect摄像机-打开读取器-打开Kinect-获取读取器的相关帧数据-使用帧数据-关闭帧-关闭读取器-关闭Kinect-关闭程序
这就是Kinect的一个完整的工作流程,无论是彩色,深度,骨骼的数据获取都需要这个流程的,而我们主要操作是在使用帧数据的这个阶段。其他基本是不变的。
4.1 kinect的开启很简单:在程序开始时,也就是unity的Start函数里写下
_Sensor = KinectSensor.GetDefault();
if (_Sensor != null)
{
_Reader = _Sensor.ColorFrameSource.OpenReader();
if (!_Sensor.IsOpen)
{
_Sensor.Open();
}
}
这样就能成功开启Kinect传感器和读取器了。
4.2 程序的关闭
要注意的是没获取完数据不要随意进行Kinect的关闭操作,不然数据会不准确,一般kinect的关闭是在你准备要关闭程序的时候进行的,在unity上的mono类里有专门的OnApplicationQuit(),在这里进行关闭kinect的操作。
代码如下:
void OnApplicationQuit()
{
if (_Reader != null)
{
_Reader.Dispose();
_Reader = null;
}
if (_Sensor != null)
{
if (_Sensor.IsOpen)
{
_Sensor.Close();
}
_Sensor = null;
}
}
中间的数据获取和数据的使用会占很大的篇幅,会在后续的博客里一个个分析
Kinect 总结---Kinect基本认识的更多相关文章
- Kinect 开发 —— Kinect Interaction 交互控件
Kinect Interactions 提供了一些新的带有姿势识别的控件如 push-to-press 按钮, grip-to-pan 列表控件, 而且支持多用户,同时二个人进行的交互,这些新添加的控 ...
- Kinect 开发 —— Kinect for windows SDK
开发 —— 基本的SDK和Windows 编程技巧(彩色图像视频流,深度图像视频流的采集,骨骼跟踪,音频处理,语音识别API) 深度数据,就是Kinect的精髓和灵魂,很多问题都转换为深度图像的模式识 ...
- 【Unity/Kinect】Kinect实现UI控件的点击
用体感来实现UI控件的点击,如点击按钮. 做法:用一个图片表示左手手掌,图片位置追踪左手手掌移动,当手掌位于UI控件的矩形内时,握拳表示点击该控件. using UnityEngine; using ...
- 【Unity/Kinect】Kinect一些常用的API
先开好这个坑,之后用到就补充,方便回顾. 获取用户相对Kinect传感器设备的位置坐标.(在Kinect坐标系中的位置) public Vector3 GetUserPosition(Int64 us ...
- 【Unity/Kinect】Kinect入门——项目搭建
本文是Unity Store里的官方Demo包中的ReadMe翻译(别人翻的),介绍了用Unity如何入门搭建起一个Kinect项目工程. 非常感谢下面这位大大的无私奉献! http://www.ma ...
- Kinect 开发 —— Kinect studio
This tool can record all the data coming into an application from a Kinect unit. You can then view, ...
- 使用HTML5开发Kinect体感游戏
一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...
- Kinect开发资源汇总
Kinect开发资源汇总 转自: http://www.sigvc.org/bbs/forum.php?mod=viewthread&tid=254&highlight=kinec ...
- [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件
本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getti ...
随机推荐
- UITableView点击每个Cell,Cell的子内容的收放
关于点击TableviewCell的子内容收放问题,拿到它的第一个思路就是, 方法一: 运用UITableview本身的代理来处理相应的展开收起: 1.代理:- (void)tableView:(UI ...
- 海康威视,大华,宇视 的视频监控iOS Demo
原谅我只提供一个链接,我在这里写了两遍,最后加个链接页面卡死了,下面的demo,最好真机调试.(写博客还是在别的地方写复制到这里比较好!) 一个画面可以做,4个,9个,16个画面原理是一样的,集合到自 ...
- web方式修改svn密码
原帖:http://www.iusesvn.com/bbs/viewthread.php?tid=20 之前的Apache22Passwd版本有个小bug,用现在的浏览器会显示空白页.这个版本Apac ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Linux 信号(二)—— signal 函数
弗洛伊德认为:要解决这些苦恼,当事人就要通过回忆并理解自己早期的童年经历,来获得对潜意识冲突的顿悟.弗洛伊德的疗法被称为“精神分析” (psychoanalysis),在 20 世纪的很长一段时间被心 ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- Duplicate entry 'javajavajav' for key 'username'
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.mysql.jd ...
- [LeetCode] Reverse Vowels of a String 翻转字符串中的元音字母
Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Giv ...
- [LeetCode] Maximum Product of Word Lengths 单词长度的最大积
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
- [LeetCode] 4Sum 四数之和
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...