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文件都是使用左手系

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

  • 相关阅读:
    在不是modelAttribute的情况下,如何保存页面输入值的方法(多行遍历)
    关于Hibernate中No row with the given identifier exists问题的原因及解决
    Oracle中exit,return,continue
    如何将表的行数赋值给变量(MySQL)
    论MySQL中如何代替Oracle中select into new_table from old_table
    有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。
    CentOS 6.6 中 mysql_5.6 主从数据库配置
    CentOS 6.6 中jdk1.6的安装和配置方法
    解决 Amoeba连接mysql出错 解决方案
    Linux系统memcached安装
  • 原文地址:https://www.cnblogs.com/virusdefender/p/3667036.html
Copyright © 2011-2022 走看看