Kinect配备有一个分辨率达640 x 480的RGB VGA 摄像头,一个深度传感器以及一个多阵列麦克风可以识别玩家的距离、动作乃至于识别和接受玩家的语音指令,而这一切都是实时进行的。
计算深度和距离的方法取决于使用的传感器和算法。
1、使用单个深度传感器:这种方法使用一个深度传感器(如MicrosoftKinect或IntelRealSense)来测量物体到传感器的距离。传感器会返回一个深度图像,其中每个像素都代表物体到传感器的距离。通过在图像中找到物体的像素位置,可以计算出物体到传感器的距离和深度。
2、使用多个深度传感器:这种方法使用多个深度传感器(如StereoCamera)来测量物体到传感器的距离。通过比较不同传感器之间的深度图像,可以计算出物体的三维位置和深度。
3、使用结构光投影:这种方法使用一个结构光投影仪来投影一个结构化的光线模式,然后使用一个相机来捕捉物体反射的光线模式。通过分析光线模式的扭曲,可以计算出物体的三维位置和深度。
1Kinect原理:
kinect1:Prime Sense公司的Light Coding技术作为原理,给不可见光打码,然后检测打码后的光束,判断物体的方位。
kinect2:TOF原理(精度、灵敏度和分辨率都更高),根据光反射回来的时间判断物体的方位,当然检测光的飞行速度是几乎不能实现的,所以发射一道强弱随时间变化的正弦光束,然后计算其回来的相位差值,所以使用场景尽量避免反射物以及不要移动Kinect,不然会有问题。
2可供研究开源库:Openni,KinectSDK,手势库NITE,Kinect-ms-sdk。由于我是新手,而且比较熟悉的Kinect的SDK,所以就从这个开始总结,其他的有机会再来详细分析。
3首先你用Kinect,首先要了解它能干什么,能获得哪些数据
其实看他的SDK就知道它能获取的数据包括:语音,彩色图像,深度图像,骨骼数据(这个是根据深度和彩色通过算法识别提供给开发者使用的)。而又这几种数据又能扩展出什么新的数据,开发出什么有趣的功能完全是由开发者们的能力和对世界的好奇。(官方SDK已提供了表情,脸部建模,语音识别,手势判断等,其他的估计不会那么快提供出来)
4Kinect的使用程序流程:
开始程序-获取kinect摄像机-打开读取器-打开Kinect-获取读取器的相关帧数据-使用帧数据-关闭帧-关闭读取器-关闭Kinect-关闭程序
这就是Kinect的一个完整的工作流程,无论是彩色,深度,骨骼的数据获取都需要这个流程的,而我们主要 *** 作是在使用帧数据的这个阶段。其他基本是不变的。
41 kinect的开启很简单:在程序开始时,也就是unity的Start函数里写下
_Sensor = KinectSensorGetDefault();
if (_Sensor != null)
{
_Reader = _SensorColorFrameSourceOpenReader();
if (!_SensorIsOpen)
{
_SensorOpen();
}
}
这样就能成功开启Kinect传感器和读取器了。
42 程序的关闭
要注意的是没获取完数据不要随意进行Kinect的关闭 *** 作,不然数据会不准确,一般kinect的关闭是在你准备要关闭程序的时候进行的,在unity上的mono类里有专门的OnApplicationQuit(),在这里进行关闭kinect的 *** 作。
代码如下:
void OnApplicationQuit()
{
if (_Reader != null)
{
_ReaderDispose();
_Reader = null;
}
if (_Sensor != null)
{
if (_SensorIsOpen)
{
_SensorClose();
}
_Sensor = null;
}
}
中间的数据获取和数据的使用会占很大的篇幅,会在后续的博客里一个个分析
以上就是关于Kinect的摄像头的像素是多少全部的内容,包括:Kinect的摄像头的像素是多少、已知坐标怎样计算深度和深度、unitykinect技术原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)