zoukankan      html  css  js  c++  java
  • 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文件都是使用左手系

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

  • 相关阅读:
    关于eclipse 的 web.xml文件 There is '1' error in 'j2ee_1_4.xsd'. 错误
    C#实现Java的AES加密解密算法
    jsp页面报错javax.servlet.jsp.jspException cannot be resolved to a type
    Ubuntu下查看jdk安装路径
    【Mysql】启动mysql报错mysqld_safe error: log-error set to /var/log/mariadb/mariadb.log
    spring mvc导出csv案例
    MyBatis 调用存储过程(详解)
    mysql 无限递归出现 data too long for column 'xxx' 错误
    java的maven项目头上有红叉解决方法
    Nexus3搭建Docker等私服
  • 原文地址:https://www.cnblogs.com/virusdefender/p/3667036.html
Copyright © 2011-2022 走看看