kinect_kinect开发 - CSDN
kinect 订阅
Kinect V1(第一代 Kinect)是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字。伴随Kinect名称的正式发布,Kinect还推出了多款配套游戏,包括Lucasarts出品的《星球大战》、MTV推出的跳舞游戏、宠物游戏、运动游戏《Kinect Sports》、冒险游戏《Kinect Adventure》、赛车游戏《Joyride》等。“Kinect”为 kinetics(动力学)加上 connection(连接)两字所自创的新词汇,读音为ki-nect(/kɪn'ɛkt/) ,并非 con-nect(/kən'ɛkt/)或 Kir-nect随着2014年10月Kinect V2(第二代 Kinect)的发布 [1]  , 微软设计师Alex Kipman和Xbox营销总经理Matthew Lapsen在接受媒体采访时表示,微软将停止生产Kinect V1传感器。 [2] 展开全文
Kinect V1(第一代 Kinect)是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字。伴随Kinect名称的正式发布,Kinect还推出了多款配套游戏,包括Lucasarts出品的《星球大战》、MTV推出的跳舞游戏、宠物游戏、运动游戏《Kinect Sports》、冒险游戏《Kinect Adventure》、赛车游戏《Joyride》等。“Kinect”为 kinetics(动力学)加上 connection(连接)两字所自创的新词汇,读音为ki-nect(/kɪn'ɛkt/) ,并非 con-nect(/kən'ɛkt/)或 Kir-nect随着2014年10月Kinect V2(第二代 Kinect)的发布 [1]  , 微软设计师Alex Kipman和Xbox营销总经理Matthew Lapsen在接受媒体采访时表示,微软将停止生产Kinect V1传感器。 [2]
信息
开发代号
Natal
外文名
Kinect
现阶段
停产 [2]
属    性
外设
公    司
微软
Kinect定义
Kinect是微软在2009年6月2日的E3大展上,正式公布的XBOX360体感周边外设。Kinect彻底颠覆了游戏的单一操作,使人机互动的理念更加彻底的展现出来。 [3]  网友普遍称其中文名为“啃奶特”。它是一种3D体感摄影机(开发代号“Project Natal”),同时它导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。 玩家可以通过这项技术在游戏中开车、与其他玩家互动、通过互联网与其他Xbox玩家分享图片和信息等。微软互动娱乐业务副总裁唐·马特里克(Don Mattrick)说:“这个技术让我们在不用发售新主机的情况下就可以步入一个互动娱乐的新纪元。”唐·马特里克还说:“先前,有种障碍把电动游戏玩家和所有人都分隔了开,”“有了Natal,大家都能加入游戏,使用发明史上最棒的遥控器——你。”微软在洛杉矶的E3电子娱乐展上揭示Kinect技术。这场娱乐展正好办在电玩产业的转折期。过去电玩产业都被认为对经济衰退免疫,但是有迹象显示整体产业成长有减缓的迹象。微软的Kinect不需要使用任何控制器,它依靠相机捕捉三维空间中玩家的运动。微软指出它会让系统更加简易操作来吸引大众。这个系统也辨识人脸,让玩家自动连上游戏。它还可辨认声音和接受命令。在游戏示范中,玩家们用脚踢仅存在于屛幕中的足球,并用伸手设法拦阻进球。在驾驶游戏中,玩家转动想像中的方向盘来操控电视游戏中的赛车。在绘画游戏,玩家则是说出颜色--“蓝色”或“浅褐色”--然后摇摆双臂来在数码式画板上飞溅一片油漆。
收起全文
精华内容
参与话题
  • 本程序是在FaceBasics-D2D实例基础上加以修改。 直接上代码吧。 在HRESULT CFaceBasics::InitializeDefaultSensor()函数中,要添加:// 创建高清面部帧源 if (SUCCEEDED(hr)){ hr = ...

    ~~有兴趣的小伙伴,加kinect算法交流群:462964980。

    本程序是在FaceBasics-D2D实例基础上加以修改。
    直接上代码吧。
    在HRESULT CFaceBasics::InitializeDefaultSensor()函数中,要添加:

    // 创建高清面部帧源
    if (SUCCEEDED(hr)){
        hr = CreateHighDefinitionFaceFrameSource(m_pKinectSensor, &m_pHDFaceFrameSource);
    }
    // 创建高清面部帧读取器
    if (SUCCEEDED(hr)){
        hr = m_pHDFaceFrameSource->OpenReader(&m_pHDFaceFrameReader);
    }
    
    // 注册临帧事件
    // 创建面部特征对齐
    if (SUCCEEDED(hr)){
        hr = CreateFaceAlignment(&m_pFaceAlignment);
    }
    
    SafeRelease(m_pHDFaceFrameSource);

    在void CFaceBasics::ProcessFaces()函数中需要添加:

    // AU单元
    float               au[FaceShapeAnimations_Count];
    
    void CFaceBasics::ProcessFaces()
    {
        HRESULT hr=S_OK;
        //GetFaceShapeAnimations();
        IBody* ppBodies[BODY_COUNT] = {0};
        bool bHaveBodyData = SUCCEEDED( UpdateBodyData(ppBodies) );
    
    
        if (bHaveBodyData)
        {
    
            // 检查是否未被跟踪
            BOOLEAN bFaceTracked = false;
            //if (SUCCEEDED(hr) )
            //{
            // check if a valid face is tracked in this face frame
            hr = m_pHDFaceFrameReader->get_HighDefinitionFaceFrameSource(&m_pHDFaceFrameSource);
            if(SUCCEEDED(hr))
            {
                hr = m_pHDFaceFrameSource->get_IsTrackingIdValid(&bFaceTracked);
            }
            //}
            // kinect离人脸的距离
            double d_face = 10.0;
    
            // 保存离kinect最近人的id
            int n_id = 0;
            if (SUCCEEDED(hr) && !bFaceTracked)
            {
                // 只检测离着kinect最近的人
                for (int i = 0; i < BODY_COUNT; ++i) 
                {
                    hr = ppBodies[i]->get_IsTracked(&bFaceTracked);
                    if (SUCCEEDED(hr) && bFaceTracked)
                    {
                        Joint joints[JointType_Count]; 
                        hr = ppBodies[i]->GetJoints(_countof(joints), joints);
                        if (SUCCEEDED(hr))
                        {
                            // A 3D location in camera space. 头部离kinect的距离 headJoint.Z;
                            CameraSpacePoint headJoint = joints[JointType_Head].Position;
                            if(headJoint.Z < d_face)
                            {
                                d_face = headJoint.Z;
                                n_id = i;
                            }
                        }
                        // break;
                    }
                }
                hr = ppBodies[n_id]->get_IsTracked(&bFaceTracked);
                // 下面很重要,要得到高清面部帧人的id
                if (SUCCEEDED(hr) && bFaceTracked)
                {
                    UINT64 id = 0;
                    ppBodies[n_id]->get_TrackingId(&id);
                    m_pHDFaceFrameSource->put_TrackingId(id);
                }
            }
        }
        for (int i = 0; i < BODY_COUNT; ++i) SafeRelease(ppBodies[i]);
        //SafeRelease(m_pHDFaceFrameSource);
        if (!m_pColorFrameReader || !m_pBodyFrameReader)
        {
            return;
        }
        if (SUCCEEDED(hr) && m_pHDFaceFrameReader != nullptr)
        {
    
            IHighDefinitionFaceFrame* pHDFaceFrame = nullptr;       
    
            hr = m_pHDFaceFrameReader ->AcquireLatestFrame(&pHDFaceFrame);
    
            if(SUCCEEDED(hr))
            {
                hr = pHDFaceFrame->GetAndRefreshFaceAlignmentResult(m_pFaceAlignment);
            }
    
    
            if (SUCCEEDED(hr))
            {
                m_pFaceAlignment->GetAnimationUnits(FaceShapeAnimations_Count,au);
                char buffer[1024];
                memset(buffer,0,sizeof(char)*1024);
                //%f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f \tT\r\n
                //%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\tT\r\n
                auto length = sprintf(buffer, "%f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f  %f \tT\r\n",
                    au[FaceShapeAnimations_JawOpen],
                    au[FaceShapeAnimations_LipPucker],
                    au[FaceShapeAnimations_JawSlideRight],
                    au[FaceShapeAnimations_LipStretcherRight],
                    au[FaceShapeAnimations_LipStretcherLeft],
                    au[FaceShapeAnimations_LipCornerPullerLeft],
                    au[FaceShapeAnimations_LipCornerPullerRight],
                    au[FaceShapeAnimations_LipCornerDepressorLeft],
                    au[FaceShapeAnimations_LipCornerDepressorRight],
                    au[FaceShapeAnimations_LeftcheekPuff],
                    au[FaceShapeAnimations_RightcheekPuff],
                    au[FaceShapeAnimations_LefteyeClosed],
                    au[FaceShapeAnimations_RighteyeClosed],
                    au[FaceShapeAnimations_RighteyebrowLowerer],
                    au[FaceShapeAnimations_LefteyebrowLowerer],
                    au[FaceShapeAnimations_LowerlipDepressorLeft],
                    au[FaceShapeAnimations_LowerlipDepressorRight]);
    
                std::wstring str = L"au.txt";
                std::ofstream file;
                // std::ios::app是让其在文件结束添加数据,不会覆盖之前的数据
                file.open(str,std::ios::app);
                if(file.is_open())
                {
                    //file.seekp(0,std::ios::end);
                    file.write(buffer,strlen(buffer));
                }
                file.close();
    
            }
    
            // 安全释放
            SafeRelease(pHDFaceFrame);
        }
    
    }
    

    到这里为止,AU单元的特征向量就生成了,然后就可以根据我们机器学习算法进行分类,或者做一些新的开发。

    展开全文
  • Kinect开发学习笔记之(一)Kinect介绍和应用

    万次阅读 多人点赞 2012-11-04 13:13:46
    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09   一、Kinect简介  Kinectfor Xbox 360,简称 Kinect,是由微软开发,应用于Xbox 360 主机的周边设备。它让玩家不...

    Kinect开发学习笔记之(一)Kinect介绍和应用

    zouxy09@qq.com

    http://blog.csdn.net/zouxy09

     

    一、Kinect简介

          Kinectfor Xbox 360,简称 Kinect,是由微软开发,应用于Xbox 360 主机的周边设备。它让玩家不需要手持或踩踏控制器,而是使用语音指令或手势来操作 Xbox360 的系统界面。它也能捕捉玩家全身上下的动作,用身体来进行游戏,带给玩家“免控制器的游戏与娱乐体验”。其在2010年11月4日于美国上市,建议售价149美金。Kinect在销售前60天内,卖出八百万部,目前已经申请金氏世界记录,成为全世界销售最快的消费性电子产品。

           2012年2月1日,微软正式发布面向Windows系统的Kinect版本“Kinect for Windows”,建议售价249美金。而在2012年晚些时候,微软还将发布面向“教育用户”的特别版Kinect。(以上来自wiki百科)

    1.1、硬件

           Kinect有三个镜头,中间的镜头是 RGB 彩色摄影机,用来采集彩色图像。左右两边镜头则分别为红外线发射器和红外线CMOS 摄影机所构成的3D结构光深度感应器,用来采集深度数据(场景中物体到摄像头的距离)。彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。Kinect也内建阵列式麦克风,由四个麦克风同时收音,比对后消除杂音,并通过其采集声音进行语音识别和声源定位。


    1.2、软件开发环境

    1.2.1、非官方组合

          一开始微软对Xbox 360推出Kinect的时候,并没有在windows的开发包。而由于Kinect强大的功能和相对低廉的价格,geeks们纷纷表示希望能在电脑上用它。于是就有多位大牛开发了驱动,目前我了解到的有三个:

    1)CL NUI Platform

          由NUI的大牛AlexP开发(他开发的其他著名产品包括PS3的windows驱动),可以这里载,目标平台是windows7,能够获取彩色摄像头,深度传感器以及加速度传感器数据,使用简单方便。

    2)OpenKinect/libfreenect

           由号称第一个破解Kinect的Hector Martin发起,可以到这里下载,目标平台是Linux and Mac,据说有人成功移植到了windows上。因为很多geek都是Mac的拥趸,所以开发参与者众多,不仅仅是个可以获得数据的driver,geek们还写了其他高级的东西,比如我前面提到的骨骼化,将彩色摄像头作为纹理贴在深度数据上等等,很吸引人啊。

    3)OpenNI

           OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。可以到这里下载。从名字判断其终极目标大约是实现少数派报告的效果,从目前放出来的一些demo,恐怕已经超越了这个终极目标。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个感觉也是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驱动。NITE是PrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等。

    1.2.2、微软官方SDK

           Kinect体感游戏在Xbox 360 上获得很好的评价,但是对于 Windows 平台上的开发却一直只能使用非官方的解决方案(上面所说),例如NKinect 配合CL NUI SDK;但是微软终于在2011 年 6 月推出了 Kinect forWindows SDK Beta,特别是可以使用 C# 与.NETFramework 4.0 来进行开发。Kinect for Windows SDK主要是针对Windows7设计,内含驱动程序、丰富的原始感测数据流程式开发接口、自然用户接口、安装文件以及参考例程。Kinect for Windows SDK可让使用C++、C#或VisualBasic语言搭配MicrosoftVisualStudio2010工具的程序设计师轻易开发使用。目前最新是V1.6 。

          Kinectfor Windows SDK的下载地址:

    http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx

           Kinect SDK目前只支持Windows 7,分为x86和x64两个版本。开发工具方面还需要.NET Framework 4.0和Visual Studio 2010 (最低Express版本)的支持。这个在后面的开发环境的配置中再做介绍。

    1.2.3、非官方和官方开发包的优缺点

    1)官方SDK:

    优点:

           提供了音频支持、调整倾角的转动电机、在全身跟踪骨骼跟踪方面:非标准姿势检测(相对于OpenNi的投降姿势…),头部、手、脚、锁骨检测以及关节遮挡等细节上的处理更为细致(但精度是否更高还不能确定)。此外,支持多传感器(多台Kinect);

    缺点:

           微软对非商业使用的限制。此外,未提供手势识别和跟踪功能,未实现RGB图像/深度图像的互对齐,只是提供了对个体坐标系的对齐。在全身骨骼跟踪中,SDK只计算了关节的位置,并未得出其旋转角度。从可移植的角度来看,SDK beta只能用于Kinect/Win7平台,而OpenNi还至少支持华硕的WAVI Xtion体感设备,今后支持的硬件平台还可能更多。相比较而言SDK beta不支持Unity3D游戏引擎、不支持记录/回放数据写入磁盘、不支持原始红外视频数据流、也不支持像OpenNi一样的角色入场和出场的事件响应机制。

    2)非官方OpenNI/NITE:

    优点:

           可用于商业开发、包含手势识别和跟踪功能、可自动对齐深度图像和RGB图像,全身跟踪、关节旋转角度计算、看起来性能较好、已有众多游戏产品应用、支持记录/回放数据写入磁盘、支持原始红外视频数据流、支持角色入场和出场的事件响应机制。支持Primesense和华硕的WAVI Xtion硬件平台和windows、Linux和Mac等软件平台。自带的代码全面支持Unity3D游戏引擎。

    缺点:

           未提供音频功能、不支持调整倾角的转动电机、在全身跟踪骨骼跟踪方面:无法跟踪头部、手、脚和锁骨的旋转动作,需要标准姿势检测(即著名的投降姿势…),关节遮挡等细节上的处理似乎存在算法bug。不能自动安装并识别Kinect多机环境。安装过程较为繁琐,特别是NITE还要申请开发证书编码。OpenNi也没有提供可用视频和深度图输入的事件触发机制(但OpenNI提供了类似功能的函数可使用,虽然不是回调函数,但是也很好用)。

    总结:

           OpenNI最大的优势就是允许跨平台多设备,以及商业应用。但从原始数据的采集和预处理技术上看,微软的SDK似乎更稳定一些,况且还提供了不错的骨骼和语音支持。对于部分身体部位识别方面的功能,SDKbeta没有提供局部识别和跟踪,这需要自己的后续开发(至少在相当一段时期内微软可能都不会提供此类功能)。OpenNi/NITE虽然提供了手势识别和跟踪,然而在全身骨骼姿势识别和跟踪上还要更多借鉴微软的产品。

    因此,按照目前在社区中的表现,SDK beta和OpenNi/NITE孰优孰劣还真无法一下子确定。而且随着越来越多的开发者加入微软这一方,SDK beta的普及可能会更快,但在更高层次的应用上,对二者的选用往往是需要一定智慧的。

    (这部分参考:http://www.hanyi.name/blog/?p=330

     

    二、Kinect应用开发汇总

          本文(百度文库上面的内容,来源未知)汇总了当前使用Kinect SDK for Windows 开发出的各种各样的应用,点击相应的链接可以看到对应Kinect应用的Demo视频。

     

    虚拟应用

    Kinect试衣镜,这款基于kinect体感技术的神奇的试衣镜,让客户可以快速的试穿衣服,提高销售效率和企业形象。

    http://v.youku.com/v_show/id_XMjU4MjExNjgw.html

    Kinect自制应用3D试衣间

    http://v.youku.com/v_show/id_XMjg0MDA3MDYw.html

     

    3D建模

    3D摄像机, 用两个KINECT实现3D摄像机的基本效果。

    http://v.youku.com/v_show/id_XMjI3MDQ2MjEy.html

    雕塑工具,立等可取Kinect成街头快速人像雕塑工具,利用Kinect对人体进行3D建模,然后根据人体的3D信息,连接相应的塑模设备,塑造出人体塑像。

    http://v.youku.com/v_show/id_XMjU2Njg2MzE2.html

     

    机械控制

    用Kinect 操控遥控直升机 

     http://v.youku.com/v_show/id_XMjgzOTYxODk2.html

    Kinect Robo,使用Kinect作为机器人的头,通过kinect检测周围环境,并进行3D建模,来指导机器人的行动。

    http://v.youku.com/v_show/id_XMjIzNDMyMjg0.html

    Kinect控制高达机械人

    http://v.youku.com/v_show/id_XMjM3NDUxMjg4.html

     

    虚拟乐器

    空气吉他,通过Kinect手势操作虚拟吉他弹奏音乐。

    http://v.youku.com/v_show/id_XMjI5NjM3NzMy.html

    Kinect弹奏中国古代乐器,通过手势的改变可以演奏出不同中国古代乐器的声音。

    http://v.youku.com/v_show/id_XMjI1MDA4MTM2.html

     

    虚拟娱乐

    Kinect破解“初音”,将体感控制应用到漫画人物——初音上。

    http://v.youku.com/v_show/id_XMjMxNjQ5MzAw.html

    变身奥特曼,捕捉玩家骨架数据,虚拟为奥特曼的形态与之随动,并且附加一些特技效果。

    http://v.youku.com/v_show/id_XMjM1MTY1NDY4.html

    Kinect破解玩光剑,Kinect检测玩家的动作,虚拟出光剑的影像,与之随动。

    http://v.youku.com/v_show/id_XMjI0NTIzOTIw.html

     

    计算机相关应用

    Kinect手势操作浏览器,通过Kinect手势对浏览器进行翻页,下拉,放缩等操作。

    http://v.youku.com/v_show/id_XMjI1MjczMzg4.html

    Air Presenter,让你的演讲从此与众不同,用kinect进行演讲的软件。

    http://v.youku.com/v_show/id_XMjU1MTMyNzky.html

    Kinect多点触摸,使用kinect实现隔空多点触摸,浏览图片、地图等。

    http://v.youku.com/v_show/id_XMjM1MzE2MTY0.html

    Kinect体感控制看片,第四军医大学西京医院骨科的医生们将破解的kinect应用在手术室,在术中,手术者可通过体感控制查看患者的影像资料。大大方便了医生手术,减少了手术室的人员流动。

    http://v.youku.com/v_show/id_XMjM2Nzg2NDky.html

     

    虚拟实验

    Kinect蜡笔物理,使用Kinect手势绘图,通过体感控制所绘图形,并使之具有物理特性,比如重力,吸引力等。

    http://v.youku.com/v_show/id_XMjI4MDMwMzM2.html

    用Kinect控制闪电(特斯拉线圈)

    http://v.youku.com/v_show/id_XMjY5NjE2MzQ0.html

     

    游戏

    Kinect破解玩马克思佩恩

    http://v.youku.com/v_show/id_XMjM2NjYxNDg0.html

    kinect破解玩求生之旅2 体感打僵尸

    http://v.youku.com/v_show/id_XMjM3Mjk5MjQw.html

    Kinect破解玩魔兽世界   

    http://v.youku.com/v_show/id_XMjMzMDM1MzI0.html

    Kinect破解玩街头霸王   

    http://v.youku.com/v_show/id_XMjM4MjkzNjA0.html

    Kinect破解玩超级马里奥兄弟 

    http://v.youku.com/v_show/id_XMjI1NzY1OTM2.html

    Kinect破解玩兵者诡道   

    http://v.youku.com/v_show/id_XMjM0NDk2MDg4.html

    Kinect破解玩 现代战争  

    http://v.youku.com/v_show/id_XMjM1NjU4NjE2.html

     

           一群来自卡内基梅隆的学生使用Kinect的交互特点实现了18个各种各种的有趣的想法。他们仅仅用了两周的时间,从大二学生到研究生不等。让我们来看一下他们实现的奇思妙想吧!

           原文及视频信息链接http://golancourses.net/2011spring/projects/project-3-interaction/

    1. Comic Kinect

          此示例主要应用了Kinect的骨架跟踪技术和玩家分段数据,将拳击和脚踢的交互通过可视的漫画效果表现出来,并且同步发出一些拟声效果。

    2. Mario Boo

           当Kinect传感器检测到有人出现在视野内时,会出现一个幽灵保持在人的背后,随着人的运动而运动,并且会根据深度信息的远近而改变自身大小。

    3. Magrathea

           Magrathea使用Kinect根据桌上的任何物体动态的产生地形图。摄像头读取桌上物体的不断变化深度信息,可以展现出类似地球地形逐渐进化的过程。

    4. We be Monsters

           从中午舞狮中获取灵感,运用Kinect的骨架跟踪技术,两个人分别同坐自己的四肢操纵虚拟怪兽的四肢和头尾。

    5. Mix&Match Interaction Toy

           使用了Kinect/OpenNI 骨架技术,使得3张卡片组成的人体可以跟玩家随动,并且通过手的滑动更换图片。

    6. Kinect Flock

           作者创建了一个微粒系统,当用户移动时,像棉絮一样的东西会随之涌动,当用户静止时,则聚集到参与者的深度区域。

    7. roboScan

           roboScan是一个3D模型+扫描仪,将一个Kinect设备固定在一个ABB 4400机械手上。设定好的动作和操作者同时控制机器人和摄像机的3D位置。Kinect的深度数据用来产生一个精确的外部环境的模型。

    8. Neurospasta

            Neurospasta是一个需要全身投入的自由形态游戏平台。参与者可以控制他们各自基于Kinect的木偶,也可以通过功能设定控制别人的化身。

    9. Will-o-the-Wisp

          这个设计充满了神秘色彩,玩家可以控制一个发光的球体,球体根据玩家手的运动而动,根据深度信息变大或变小。

    10. Balloon Grab

           通过检测手掌张开还是握紧的手势,作者开发了一个基于模拟气球飞行的简易小游戏。

    11. Hand-Tracking Visualization

           该软件使用手势控制音频的可视化效果,结合检测到场景中手距Kinect的深度信息。参与者手的位置,速度以及其他参数被用来创建一个交互式的声音的可视化效果。


            感觉Kinect的应用也应景一句话:Kinect的应用取决于你的想象空间!


     

    展开全文
  • 基于kinect v2的人体动作识别,配套博客(http://blog.csdn.net/baolinq/article/),基于mfc,可以识别左移右移、上蹦下跳等,也可以自己自定义其他动作,加一些判定代码即可。使用的时候可能需要自己新建一个工程...
  • Kinect学习(一):开发环境搭建

    万次阅读 2018-06-20 11:27:11
    前言 当初刚进大学时买了一台Xbox 360,为了玩体感游戏另外还买了一个Kinect

    前言

    当初刚进大学时买了一台Xbox 360,为了玩体感游戏另外还买了一个Kinect。为了便于PC端开发,微软提供了一套官方的驱动,当然还有个开源库OpenNI,目前还是先采用微软提供的SDK上手,后续再使用OpenNIR。
    我的开发平台是:Win 10 + VS2015 + Kinect for Windows SDK v1.8 + OpenCV 3.1.0
    系统要是win 7以上的版本,VS要是10以上的版本。
    另外,我用的是kinect一代(Xbox 360)的所以选择了v1.x的SDK,如果是kinect二代(Xbox One)的就要选择v2.x的SDK。

    Kinect for Windows SDK

    1、到微软官网上下载SDK:Kinect for Windows SDK v1.8,下载下来后运行exe文件,等待自动安装结束;
    2、到微软官网下载ToolKit:Kinect for Windows Developer Toolkit v1.8,与前面相同,下载完成后运行exe文件,等待自动安装结束即可;
    3、前面两个都安装完成后,可以连上Kinect(之前安装时不能接Kinect设备,结束后才可以接上),可以在设备管理器中找到Kinect设备,即表示驱动安装成功;
    png
    4、打开“开始-》所有程序-》Kinect for Windows SDK v1.8-》Developer Toolkit Browser v1.8”,可以看到一些开发文档、例程以及一些demo,可以自己运行来玩玩。
    png
    png

    在Visual Studio中配置环境

    前面的步骤还是很简单的,只需要稍微动动鼠标就能搞定。
    如果要使用Visual Studio进行开发,还需要配置include和lib的路径。在项目的属性中找到“VC++目录”。
    1、在包含目录中添加路径:C:\Program Files\Microsoft SDKs\Kinect\v1.8\inc
    png
    png
    2、在库目录中添加路径:C:\Program Files\Microsoft SDKs\Kinect\v1.8\lib\amd64
    png
    png
    补充:库目录下有两个目录,如果是64位就选amd64的目录,如果是32位就选x86的目录。
    png
    3、还需要在链接器-》输入-》附加依赖项,添加Kinect10.lib
    png
    到这里kinect的开发环境已经配置好了,还有一些常用库比如OpenCV什么的,网上有很多详细的教程,就不赘述了。

    展开全文
  • Kinect介绍

    2019-05-12 16:55:25
    (一)Kinect的发展历史 Kinect最早是在2009年6月1日E3 2009上首次公布,当时的代号是“Projet Natal”意为初生,遵循微软以城市名作为开发代号的传统,“Projet Natal”是由来自巴西的微软董事Alex Kipman以巴西...

    (一)Kinect的发展历史

    Kinect最早是在2009年6月1日E3 2009上首次公布,当时的代号是“Projet Natal”意为初生,遵循微软以城市名作为开发代号的传统,“Projet Natal”是由来自巴西的微软董事Alex Kipman以巴西城市Natal, Rio Grande do Norte命名。Natal在英语中还有初生的含义,这也是微软给予此计划对XBOX360带来新生的期望。

    微软在2010年6月13日晚在Galen Center举行“初生计划全球首秀”发布会,在会上微软宣布“Poject Natal”正式命名为Kinect,取意为“kinetic”(运动)和“connect”(沟通)的融合,Kinect一代就此诞生。微软在这次发布会上同时宣布,Kinect将于2010年11月4日在北美正式发售, 2012年10月9日开始在中国销售第一代Kinect for Windows感应器。

    2013年五月Xbox One 发表会上Scott Evans 和 Kareem Choudhry 两位Kinect专家展示了次世代Kinect(Kinect二代)那些不可思议的新功能。新Kinect作为次世代主机必不可少的一部分,开发者们可以基于Kinect感知的语音、手势和玩家感觉信息,来给玩家带来前所未有的互动性体验。2014年10月微软开始在中国销售第二代Kinect for Windows感应器。

    (二)Kinect两代产品异同点

    1、Kinect组件

    Kinect v1及Kinect v2都拥有一个外壳、底座、散热器、4个不同类型螺钉、3部分主板及14种关键芯片;都拥有4个麦克风阵列,可过滤噪声,定位声源,识别语音内容,比较图1、图2可知,他们的摆放位置有所差异;Kinect v1有Moving Touch传动马达电动机用于仰角控制,一般是根据它与用户间的位置、距离调节,Kinect v2需要手动去控制;Kinect拥有多个摄像机,Kinect v1从左至右分别为红外投影机,颜色摄像机,红外摄像机,Kinect v1如图1所示。Kinect v2从左至右分别为颜色摄像头,红外摄像机,红外投影机(这两部分看不到外观)。

     

                                                                                                图1 Kinect V1

     

                                                                                                图2 Kinect V2

    2、Kinect配置比较

    Kinect彩色摄像头可用来拍摄视角范围内的彩色视频图像,Kienct v1的分辨率为640x480,Kienct v2的分辨率为1920x1080。Kinect可用来获取用户的深度信息,Kinect v1获取的深度图像的分辨率为320x240,Kinect v2的分辨率为512x424。Kinect v1可检测到的有效范围为0.8~4.0m,Kinect v2可检测到的有效范围为0.5~4.5m,只有用户在有效范围内,Kinect才能检测到用户的存在。骨骼跟踪是Kinect“体感操作”的基础,Kinect可以跟踪到6个用户的位置信息,并且Kinect v1可以实时跟踪2个用户的详细位置信息,包括详细的姿势和骨骼点的三维坐标信息,Kinect v2可以同时跟踪6个用户的骨骼节点。Kinect v1最多可以支持20个骨骼点,Kinect v2最多可支持25个骨骼节点,数据对象类型以骨骼帧的形式提供,每一帧最多可以保存所支持的骨骼点对应的个数。Kinect v1骨骼点如图3所示,Kinect v2骨骼点如图4所示,Kinect v1及Kinect v2配置比较如表1所示

                      

     

                                                                                         图3 Kinect V1骨骼节点

     

                                                                                        图4 Kinect V2骨骼节点

                                                                                                      表1

     

    Kinect v1

    Kinect v2

    颜色(Color)

    分辨率(Resolution)

    640×480

    1920×1080

    fps

    30fps

    30fps

    深度(Depth)

    分辨率(Resolution)

    320×240

    512×424

    fps

    30fps

    30fps

    人物数量(Player)

    6人

    6人

    人物姿势(Skeleton)

    2人

    6人

    关节(Joint)

    20关节/人

    25关节/人

    检测范围(Range of Detection)

    0.8~4.0m

    0.5~4.5m

    角度(Angle)(Depth)

    水平(Horizontal)

    57度

    70度

    垂直(Vertical)

    43度

    60度

    3、运行环境的比较

    Kinect v1要在Windows 7及以后的版本上运行,Kinect v2要求是在Windows 8及以后的版本上运行。Kinect v1要求USB 2.0(或更快的USB)来运行,因为Kinect v2预览版传感器的分辨率也提高了,需要更快的USB 3.0来运行。CPU方面,Kinect v2和Kinect v1一样,要求Dual Core 2.66 GHz以上。Kinect v1要求的是支持DirectX 9.0c的GPU(Kinect Fusion除外),Kinect v2要求支持DirectX 11.0以后的GPU,像笔记本这种没有装载NVIDIA GeForce和AMD Radeon外置GPU(独立显卡)的很多无法运行,而像有Intel HD Graphics这种支持DirectX 11.0以后的处理器内置的GPU(集成显卡)是可以运行的。Kinect v1和Kinect v2运行环境的详细比较表如表2 所示。

                                                                                       表2

     

     

    Kinect v1

    Kinect v2

    OS

    Windows 7及以后

    Windows 8及以后

    编译器(Compiler)

    VisualStudio 2010以后

    VisualStudio 2012以后

    端口(Connector)

    USB 2.0

    USB 3.0

    CPU

    Dual-Core 2.66GHz

    Dual-Core 2.66GHz

    GPU

    DirectX 9.0c

    DirectX 11.0

    RAM

    2.0GBytes

    2.0 GBytes

    (三)Kinect功能及原理解析

    1、深度检测

    深度检测是Kinect的核心技术,开发者可以通过Kinect获取到用户的深度信息,判断用户的位置。Kinect v1的深度检测用的是Light Coding的方式:红外投影机投射红外光谱,照射到粗糙物体或者毛玻璃后,光谱发生扭曲,形成散斑。因为散斑具有高度随机性,所以空间中每一个散斑的图案都不相同。在空间中打上这样的结构光,整个空间即被标记,当物体放在这个空间中时,红外摄像机接收到反馈信息,就可根据物体上散斑图案判断物体位置,形成深度图像。Kinect v2的深度检测用的是Time Of Light的方式:通过红外摄像头投射红外线形成反射光,根据光线飞行时间判断物体位置,形成深度图像。

    2、骨骼跟踪

    为了能对用户进行骨骼跟踪,需要构造出用户的骨骼图,对对应骨骼节点进行跟踪。首先要从深度图像中识别出“人体”目标,即从深度图像中跟踪任何“大”字形物体,此处与人体相似的衣物也会被标定。然后逐点扫描这些区域的深度图像像素点,来判断属于人体哪个部位,其中包扩边缘检测、噪声阈值处理等计算机图形学技术。通过这一技术最终将人体从背景环境中区分出来。当系统将人体从深度图像中分离出来后,接下来就是将人体各个部位识别出来。由于人的高矮胖瘦的不同,当用户做相同的动作时会呈现出不同的状态,机器是无法穷举出所有人体姿态的,只能通过机器学习去抽象常见的姿态和行为去推测、理解人类的意图,通过人体各个部位的特征值进行分类。获得人体的不同部位之后就可以进行关节点的识别,人体的关节连接着躯干、四肢、头颅等,会有很多重叠的地方,所以需要分别从正面、侧面等多个角度去分析、机器学习,根据每一个可能的像素来确定关节点,形成骨骼系统。

    3、人脸识别

    人脸识别也需要机器学习的支持,第一步首先定位人脸的存在,其次基于人的面部特征,对输入的人脸图像或者视频进行进一步分析,包括脸的位置、大小和各个面部器官的位置信息,依据这些信息,进一步提取每个人脸中所蕴含的身份特征,并将其与已知的人脸进行比较,从而识别每个人的身份。

    4、语音识别

    Kinect中语音识别包括很多层次的技术,如最简单的“语音命令”、声音特征识别、语种识别、分词、语气语调性感探测等多个方面。Kinect麦克风阵列捕获的音频数据流通过音频增强效果算法处理来屏蔽环境噪声。即使在一个大的空间,即使人离麦克风有一定距离,也能够进行语音命令的识别。Kinect阵列技术包含有效的噪声消除和回波抑制算法,同时采用波束成形技术通过每个独立设备的响应时间来确定声源位置,并尽可能避免环境噪声的影响。

    (4) Kinect发展前景

    目前,国外已经出现了很多使用Kinect开发的精彩应用,比如Kinect试衣镜、Air Presenter演讲软件、Kinect光剑、Kinect街头霸王等。很多创意都可以在MSDN Channel 9的Coding4fun栏目里看到。

    在国内,Kinect for Windows SDK Beta发布伊始,微软亚洲研究院便启动了“微软校园菁英计划”之Kinect Pioneer项目,在全国范围内动员微软学生技术俱乐部的同学们集思广益,提交他们基于Kinect的新创意,并向优秀的创意团队提供Kinect设备和技术支持。仅一个多月的开发时间,多个优秀创意团队便成功提交了Kinect创意项目原型,其中包括使用手势进行变脸的3D脸谱虚拟平台、Kinect教学助手、基于Kinect的网上试衣间等。在随后的2012微软精英大挑战Kinect主题上,来自全国30所高校的100余支队伍也积极参与到Kinect for Windows的开发当中,这使得Kinect在中国大学生中得到了全面的推广。

    Kinect的手势识别功能让用户不再需要数据手套即可通过双手操作系统界面,Kinect的动作识别功能让用户无需穿上数据衣即可进行系统交互,Kinect的语音识别功能让用户通过口令即可控制虚拟场景,Kinect在虚拟现实领域会有很大的发展。“ Air Guitar prototype using Kinect camera”是一款虚拟吉他的游戏,2007年英国艺术家Chris o’Shea 曾利用其表演过。这款游戏可通过Kinect的深度图像数据以及骨骼跟踪功能,对双手关节点的相对位置、角度、以及拨动“空气琴弦”那只手的运动速度进行实时跟踪,在空气中将琴弦划分若干区域。通过增强现实技术让演奏者可以看到屏幕上的虚拟琴弦,对提高演奏技艺有很大帮助。“虚拟试衣镜”也正悄然改变着一些时装专卖店的格局,让试衣间不再成为必需品。顾客不需要进入试衣间脱衣服试穿,只要站在虚拟试衣镜前比划,就能在屏幕上预览自己穿上新衣服的样子。同时在课堂上,教师也可通过Kinect给学生演示一些DNA、化学分子结构虚拟现实学习系统,让课堂恒生趣味性。可见Kinect的应用领域十分广泛。

     

    展开全文
  • 本连载主要是比较Kinect for Windows的现行版(v1)和次世代型的开发者预览版(v2),以C++开发者为背景介绍进化的硬件和软件。本文主要是对传感的配置和运行条件进行彻底的比较。 本连载介绍的Kinect for ...
  • 为了便于PC端开发,...我的开发平台是:Win 10 + VS2017 + Kinect for Windows SDK v1.8 + OpenCV 3.4.1 系统要是win 7以上的版本,VS要是10以上的版本。 另外,我用的是kinect一代(Xbox 360)的所以选择了v1....
  • Kinect入门介绍---Kinect V2开发学习(1)

    千次阅读 2019-03-09 14:34:20
    Kinect 传感器的工作原理 Kinect 传感器是美国微软公司 2010 年推出的一款体态感知设备,它不需要用借助任何手柄之类的控制即可完成人与机器的交流,它一经面世便成为了研究的热门。该传感器的核心芯片是 Prime...
  • Kinect安装与使用(一)

    万次阅读 2020-06-11 19:34:27
    一、Kinect的安装 点击下载Kinect for Windows SDK 1.7,并进行安装。 官网给出的安装要求: 支持的操作系统 Windows 7,Windows 8,Windows Embedded Standard 7 硬件要求 您的计算机必须具备以下最低功能: ...
  • Kinect2.0 结合Unity开发记录

    千次阅读 2018-03-19 11:10:15
    之前项目做完好久,后面电脑重装系统了,时间久远 重新弄一次又出一些奇怪的问题,总算弄好了,记录一下。开发环境是Window10.第一步 :首先就是机器了,拆卡装好,在安装好SDK前 先不要连接电脑!...
  • Kinect开发(如何连接电脑)

    万次阅读 2018-01-08 14:37:57
    Kinect设备一台(包括电源线一个,转换器两个,USB3.0接口线,转换器线一个,Kinect连接线一个); 电脑配置: 64位(x64)处理器 i7 2.5-GHz或更高 内置USB3.0接口 4GB RAM DX11图形适配器 Win8/10 2.安装...
  • Kinect

    2020-07-27 23:30:56
    Kinect基本原理,Kinect测量身高,测量三围,抠图等等
  • Kinect深度图与RGB摄像头的标定与配准

    万次阅读 多人点赞 2019-01-07 23:16:38
    自从有了Kinect,根据深度图提取前景就非常方便了。因此出现了很多虚拟现实、视频融合等应用。但是,Kinect自身的RGB摄像头分辨率有限,清晰度也不及一些专业摄像头,因此有了用第三方摄像头代替Kinect摄像头的想法...
  • Kinect实现简单的三维重建

    万次阅读 多人点赞 2014-06-16 20:41:32
    Kinect想必大家已经很熟悉了,最近基于Kinect的创意应用更是呈井喷状态啊!看到很多国外大牛用Kinect做三维重建,其中最著名的要数来自微软研究院的Kinect Fusion了,可以看看下面这个视频...
  • ROS下Kinect2的驱动安装及简单应用

    万次阅读 多人点赞 2017-07-18 09:08:53
    本Blog主要介绍Kinect2在Ubuntu下驱动的安装, 并获取Kinect图像以ROS的方式发布到ROS环境中, 最后简要的介绍了一些源码, 以及一些简单的修改
  • KinectFusion官方文档翻译

    千次阅读 2017-04-12 17:55:36
    KinectFusion官方文档翻译 Kinect Fusion的官方文档页面:https://msdn.microsoft.com/en-us/library/dn188670.aspx Kinect Fusion项目主页面(含论文和视频):...
  • Kinect for Windows SDK1.7中引入了Kinect ...在1.8的SDK中对该功能进行了改进和强化,Kinect Fusion能够使得我们使用Kinect for Windows 传感器来进行真实场景的三维几何重建,目前已支持导出.obj及.stl等三维数
  • ROS笔记(20) Kinect仿真

    万次阅读 2020-01-11 17:05:12
    Kinect仿真、创建模型、添加模型、添加Gezebo插件、Gezebo仿真
  • Unity 2017使用 Kinect v2简单介绍及基本操作

    万次阅读 多人点赞 2018-09-27 11:50:39
    最近由于需要使用 Unity + Kinect进行开发,所以就写一篇博客来记录一下自己的学习过程一. Kinect简介微软的一个体感游戏外设产品 TvT,其他自行百度。二.Kinect API主要脚本:KinectManager 名字 功能 Sensor ...
  • KinectKinectFusion重建

    千次阅读 2016-09-17 15:51:54
    有关Kinect应用开发正日新月异,稍有懈怠就会被远远甩在身后。不过,Kinect目前带给我们的仍只是一个充满无限可能的远景,正如App store能吸引年仅11岁的开发者一样,Kinect未来将对“全民开发者”产生重要推动作用...
1 2 3 4 5 ... 20
收藏数 15,883
精华内容 6,353
关键字:

kinect