
SDK 安装
kinect 是输入。类似鼠标 即时动态捕捉、影像辨识、麦克风输入、语音辨识
Kinect 是一组传感器的组合,包含一个彩色摄像头,一对深度摄像头(一个用以发射红
外,一个用以接收) ,一组麦克风阵列和底座马达。
彩色摄像头想必大家都已经很熟悉了。深度摄像头是由红外线提供的,返回画面上每个
点的深度值(离 Kinect 的距离,单位是 mm,标称精度约 5mm) 。麦克风阵列其实是数个水平放置的麦克风,因为彼此间有距离,所以可以识别说话人的方向,借此粗略估计是哪个玩家在说话,便于想象的话可以理解为类似声纳图(声音我们不涉及)。
读取彩色数据流,可以获得一张1080p的(19201080);
犹如拍照应用
看SDK自带示例
Color Depth D2D 彩色数据流
和许多输入设备不一样,Kinect 能够产生三维数据,它有红外发射器和摄像头。 Kinect SDK 从红外摄像头获取的红外数据后,对其进行计算处理,然后产生景深影像数据。
深度帧数据中,每个像素占 16 位,即每一个像素占 2 个字节。每一个像素的深度值只占用了 16 个位中的 13 个位。
获取每一个像素的距离很容易,但是要直接使用还需要做一些位 *** 作。如上图所示,深度值存储在第 3 至 15 位中,要获取能够直接使用的深度数据需要向右移位,将游戏者索引(Player Index)位移除
看SDK自带示例
Depth Basics-D2D 深度数据流
05-45米
25个关节点 每个关节点的 3D空间坐标和转向
看SDK自带示例
Body Basics D2D 骨骼数据流
示例:
Color Depth D2D 彩色数据流
Depth Basics-D2D 深度数据流
Coordinate Mapping Basics 扣出人物,置换背景
Body Basics D2D 骨骼数据流
kinect捕捉骨骼和体型没什么关系的,这个可能是你在skeleton数组中取的骨骼没有对应造成的
每个人从摄像头范围内移动到范围外的时候,骨骼信息是不会立刻清空的,这时体型相同的人进来时kinect会把他识别成同一个人,体型不同的人进来时skeleton数组就会新增了一条骨骼信息,这时你如果还是用第一个人的骨骼信息来跟踪这个人的话就肯定会出问题了。你需要的是找到和当前的人对应的骨骼信息。
Kinect10,彩色摄像头为640480,深度摄像头为320240,只能识别两个人的骨骼数据。
Kinect20,彩色为1080P,深度摄像头为512424,能识别六个人的骨骼,并且识别稳定精度高。
两代都有人脸检测,3维重建等功能。20可以看做是10的全面升级。
体感设备是连接到游戏主机上的机器,它可以通过感应器,接收玩家的动作或语音信息,从而可以完成游戏的转换。体感设备突破了传统意义上的游戏模式,让玩家可以丢掉手中的游戏控制手柄。
Kinect的拆开效果图
左边的第一个圆圈装置是红外投射器,中间的是RGB摄影机,最右边的为红外感应器。
红外投射器不断向外发出红外结构光,就相当于蝙蝠向外发出的声波,红外结构光照到不同距离的地方强度会不一样,如同声波会衰减一样。红外感应器,相当于蝙蝠的耳朵,用来接收反馈的消息,不同强度的结构光会在红外感应器上产生不同强度的感应,这样,Kinect就知道了面前物体的深度信息,将不同深度的物体区别开来。
Kinect会从上到下扫描你,然后根据你的身高给逐步判断出你的膝盖在哪,手掌在哪,肚子在哪,并把这些相对的位置数据绑定到一个虚拟的骨骼上面,这样,就完成了真人到虚拟人的映射。
虽然都是将数转成字符串,但大有区别的,两个的作用根本就不一样:
num2str是将数转成文字,举例子 num2str(43)得到的将是'43',有两个字符
char是按照ascii码表将数字映射成字符,char(43)得到的将是‘+’,(加号的ascii码就是43)
Num2str函数是一个相当有用的函数,一般配合[]连接符使用
1 用于求导数的表达式,函数X^2 – y^p + y^t,pt为数值,可以跟随程序的不同被赋予不同的值。 Diff([‘x^2 – y^’ num2str(p) ‘+y^’ num2str(t), x])
2 用于求解积分用法同上,把被积函数表示出来就可以了。 int([‘x^2 – y^’ num2str(p) ‘+y^’ num2str(t), x, a,b])
3 用于求解方程或微分方程 Solve([‘x^2 – x^’ num2str(p) ‘+x^’ num2str(t)],x) Dsolve([‘Dx^2 – x^’ num2str(p) ‘+x^’ num2str(t)], x)
4 如果你要运行一些大的算法,涉及到了循环,你不防试试下面的方法,提示程序的进度。这个是我在做Monte Carlo时的一个收获。 Plot()任意的绘图, Text(x, y , ['Monte Carlo Number=' num2str(mc) '/' num2str(NMc)])将这个语句写在循环体的内部。
5 在保存图像的时候用到动态的给文件起名的时候,也可以用这个语句。文件名[‘file’ num2str(i) ‘bmp’]i为循环计数名。
MATLAB char
使用方法
S = char(X)
把表示字符的非负整数数组X转化为字符串数组S,实际的字符显示和给定的字符编码有关。X的范围为从0到65535,任何在此范围外的数据都没有定义。使用double函数把字符串转化为对应整数。
S = char(C)
如C是一个元胞字符数组,C中的每个元素放置在字符数组s中的行中。用cellstr函数可以转化回来。
S = char(t1, t2, t3, )
生成字符型数组S把t1,t2,t3,作为行,为了生成有效的矩阵自动在每个字符型数组加倍添加空格。每个字符参数,ti,本身是字符型数组。这允许任意大的字符数组的创建。空字符串是重要的。
速度不同,分辨率不同。
摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用。
数字摄像头可以直接捕捉影像,然后通过串、并口或者USB接口传到计算机里。电脑市场上的摄像头基本以数字摄像头为主,而数字摄像头中又以使用新型数据传输接口的USB数字摄像头为主,市场上可见的大部分都是这种产品。
除此之外还有一种与视频采集卡配合使用的产品,但还不是主流。由于个人电脑的迅速普及,模拟摄像头的整体成本较高,而且不能满足BSV液晶拼接屏接口等原因,USB接口的传输速度远远高于串口、并口的速度,因此市场USB接口的数字摄像头。
以上就是关于Kinect结合Unity基础使用(一)全部的内容,包括:Kinect结合Unity基础使用(一)、Unity+Kinect骨骼自动校队问题、kinect一代和二代的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)