“细”说乾隆

- 做事情,需要专注

My Links

Blog Stats

News

置顶随笔 #

[置顶]ADO.NET Entity Framework 之 Code First 快速入门

摘要: ADO.NET Entity Framework CTP 5 (以下简称CTP5)已经发布好长时间了。它将是最后一个CTP版本(adonet博客里面是这样说的)。至于最后的归宿, 会不会集成到VS2010 SP1里面去?本篇博文仅仅介绍快速入门,更多内容您可以访问adonet博客或者等待下文。在这之前,您首先需要下载CTP5.下面以最简单的文章和文章类型举例:首先创建一个解决方案,引用CTP5,System.Data.Entity和System.ComponentModel.DataAnnotations解决方案如下:Model中的两个类代码非常简单:ArticleType.csArticle阅读全文

posted @ 2011-02-23 14:16 苦逼的屌丝 阅读(4206) 评论(33) 编辑

2011年7月1日 #

浅谈Kinect for Windows SDK之深度数据

马老师的Kienct系列写的很不错,等他的Depth Data也等了好几天了,不见其更新。于是自己在空闲时间研究了下。特发此文,与各位园友分享。

如果您对Kinect for Windows开发不了解的话,建议您点击下马老师的博客,或者观看相关视频进行了解。

在C#中,获得Depth Data有两种方式。当然大家最喜欢用的是基于事件的这一种。

       Runtime nui = new Runtime();    
            private void Window_Loaded(object sender, RoutedEventArgs e) 
            {     
                nui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking);
                nui.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(DepthFrameReady);
                nui.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.DepthAndPlayerIndex);  
            }   
            void DepthFrameReady(object sender, ImageFrameReadyEventArgs e)
		    {
		        
		    } 

在这里,我们只讨论基于RuntimeOptions.UseDepthAndPlayerIndex的景深数据。

ImageFrameReadyEventArgs中返回了一个ImageFrame类实例,ImageFrame类中包含了PlanarImage类,PlanarImage中包含了一个Bits属性。它是一个bytes数组。

这个数组包含了每一个像素的数据信息。其规则是,从左到右,从上到下。

数组中每一项包含了距离和PlayerIndex信息(这是仅仅基于RuntimeOptions.UseDepthAndPlayerIndex的景深数据,其他类型的枚举可能不包括PalyerIndex数据)

数组中每一项包含2个byte,总计16 bit


低位的后3位是PlayerIndex的数据,理论上,应该支持2^3个PlayerIndex,可是Kinect最多可达6个可能的值,目前仅支持3个。

其余的13位就是景深数据,在计算距离时,要移掉后面3位,高位要左移5位,然后相加或者取或运算。

公式为:Bytes[1] * 2^5 + Bytes[0] / 2^3(右移3位,相当于除以2^3,一定要取整)

那么理论上支持最大的距离是8192毫米,即8.192米。

当然,公式也可以这样写:Bytes[0] >> 3 | Bytes[1] << 5

OK,就写到这里了,我的理解是这样的,如果我的理解有什么问题,欢迎提出来。

 

 

 

 

 

 

posted @ 2011-07-01 13:22 苦逼的屌丝 阅读(2094) 评论(4) 编辑

2011年2月23日 #

ADO.NET Entity Framework 之 Code First 快速入门

ADO.NET Entity Framework CTP 5 (以下简称CTP5)已经发布好长时间了。它将是最后一个CTP版本(adonet博客里面是这样说的)。至于最后的归宿, 会不会集成到VS2010 SP1里面去?

本篇博文仅仅介绍快速入门,更多内容您可以访问adonet博客或者等待下文。

在这之前,您首先需要下载CTP5.

下面以最简单的文章和文章类型举例:

首先创建一个解决方案,引用CTP5,System.Data.Entity和System.ComponentModel.DataAnnotations

解决方案如下:

Model中的两个类代码非常简单:

ArticleType.cs

Article.cs

其中,在字段上加Key特性的,将会生成表的主键,virtual字段在此作用是延迟加载。

Context.cs 代码比较简单,继承自DbContext

在App.Config中配置如下连接字符串

<connectionStrings>
    <add name="Context" connectionString="pwd=abc123;uid=sa;database=CodeFirst;server=.\sql2008" providerName="System.Data.SqlClient" />
  </connectionStrings>

注意:providerName 必不可少

至此,Code First代码基本完成。下面进行测试

准备测试数据。在Porgram.cs编写如下代码:

在程序入口写入下面代码:

DbContext将会根据Model自动创建数据库和表。

同时数据已插入数据库

代码下载

posted @ 2011-02-23 14:16 苦逼的屌丝 阅读(4206) 评论(33) 编辑