kinect开发入门笔记

http://www.cnblogs.com/yangecnu/p/Learning-KinectSDK.html

代码基本上都是来源于上面这个博客

 

最基本的例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Kinect;
namespace demo1
{
    class Program
    {
        static void Main(string[] args)
        {
            KinectSensor sensor = KinectSensor.KinectSensors[0];
            sensor.DepthStream.Enable();
            sensor.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>(sensor_DepthFrameReady);
            sensor.Start();
            while (Console.ReadKey().Key != ConsoleKey.Spacebar)
            {

            }
        }

        static void sensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
        {
            using (var depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null)
                    return;
                short[] bits = new short[depthFrame.PixelDataLength];
                depthFrame.CopyPixelDataTo(bits);
                foreach (var bit in bits)
                    Console.Write(bit);
            }
        }
    }
}

 

最近老师让做的是人脸表情追踪,就是获取人脸上的那些点之后然后写入bvh文件,驱动candide人脸模型。

之前的kinect基础并不是很好,很多时间都浪费在看代码上了,其实今天仔细的看了看,很多代码直接使用demo

里面的就好。

FaceTrackFrame frame = this.faceTracker.Track(
                        colorImageFormat, colorImage, depthImageFormat, depthImage, skeletonOfInterest);

                    this.lastFaceTrackSucceeded = frame.TrackSuccessful;
                    if (this.lastFaceTrackSucceeded)
                    {
                        var p = frame.Get3DShape();
                        if (faceTriangles == null)
                        {

                            // only need to get this once.  It doesn't change.
                            faceTriangles = frame.GetTriangles();
                            //You can git other params here
                           
                        }

                        this.facePoints = frame.GetProjected3DShape();
                    }

这一段中的frame这个有几个方法,Get3DShape, GetTriangles, GetProjectedShape。第一个函数返回一个3D顶点坐标数组,也就是变形后的个人脸部模型上的各个顶点的3D坐标。第二个函数返回模型上的三角形面片数组,其中每个三角形面片表示为其三个顶点的索引值。通过这两个函数,就可以将变形后的脸部模型输出为3D文件格式,然后使用一些3D模型查看器来观看模型。

 

kinect和bvh文件都是使用左手系

 

接下来就应该是学习三维空间转换了,加油~

posted @ 2014-04-15 18:36  virusdefender  阅读(495)  评论(0编辑  收藏  举报