Kinect_概述
Kinect可以進行身體節點定位,姿勢定位,人臉識別等功能,在此先做簡單介紹,后續主要介紹插件的應用,畢竟自己開發識別過程太消耗時間。
(注1:Kinect官方雖然提供了Unity的APi,但是方便起見采用一些插件,更利于開發相關功能。采用插件有Kinect+for+unity+sdk+v2.9.unitypackage 和Kinect+v2+Examples+with+MS-SDK+.unitypackage,其實這兩個是一樣的)
1)新建一個空游戲物體,添加KinectManager組件
2)新建腳本,通過kinectManger = KinectManager.Instance;獲取到KinectManager運行實例。
3)通過kinectManger 即可獲取Kinect識別的人物位置,關節等,如下簡單代碼所示:
(注1:一下都是簡單代碼,應用時主要采用插件中已經給定的腳本,功能很完善,一下簡單代碼只是為了理解,可掠過)
(注2:Kinect識別任務施工過userID(long類型)來識別,此Id通過一個傳入的int 類型的參數(表示第幾個body)獲得)
/// <summary>/// 獲取kinect攝像頭畫面,KinectManager中Computer color Map需勾選/// 如果勾選Display color map則會自動顯示,并可通過Display maps by percent 修改畫面大小/// </summary>private void GetKinectTexture(){Texture kinectTexture = kinectManger.GetUsersClrTex();disRawImage.texture = kinectTexture;} /// <summary>/// kinectManger初始化后是否檢測到人體/// </summary>/// <returns></returns>private bool GetDetected(){//return kinectManger != null && kinectManger.IsInitialized() && kinectManger.GetUsersCount() > 0;return kinectManger.IsUserDetected();} /// <summary>/// 人體檢測,獲取人體的body位置/// 獲取到的bodyPostion是根據Kinect的實際高度等參數獲得的真是距離,單位為M。/// 如果獲取到的數據要反饋到UI上則需要按分辨率進行折算/// 如果bodyGo尺寸較大,但是獲取到的bodyPostion的移動數據較小,則移動效果不明顯/// </summary>/// <param name="index">獲取第幾個人體數據</param>private void GetUserBody(int index){//if(kinectManger!=null && kinectManger.IsInitialized())//{// long userId = kinectManger.GetUserIdByIndex(index);// Vector3 bodyPostion = kinectManger.GetUserPosition(userId);// bodyGo.transform.position = bodyPostion;//}if (GetDetected()){long userId = kinectManger.GetUserIdByIndex(index);Vector3 bodyPostion = kinectManger.GetUserPosition(userId);bodyGo.transform.position = bodyPostion;print("body position:" + bodyPostion);}}總結
- 上一篇: dlp技术(dlp技术和单片lcd的区别
- 下一篇: 相机快门和曝光时间的确定