感谢胡哥的支持,我和宇神才能够有一点点的进步。
更要感谢网络上面各路大神无私奉献的精神
尽管之前也或多或少的看过C#,也玩过Kinect,但是只停留在了玩的程度。
今天晚上在胡哥的鼓励下,最终还是比较正式比较努力的开始进行了Kinect的一步步学习。
由于我们没有比较全面的学习资料,所以我和宇神就在网上各种搜索资料学习,我也成功的翻到墙的另一头去看了看精彩的世界,最后还是没有能够找到比较合适的资源。宇神用他的破电脑找到了一个blog,先贴在这里,供大家学习参考,感谢博主的无私分享
http://www.cnblogs.com/yangecnu/
恩,是这样的,因为博文是翻译的文章,我们是根据这个来进行的学习,第一篇是基础的环境配置之类的东西,就不再赘述了。
需要注意的是各位如果想要进行开发学习的话要注意设备和SDK包的版本匹配,1.0可以和Kinect搭配使用,2.0的应该是需要和最新的Kinect2.0搭配使用的,因为笔者囊中羞涩,就没有用最新的进行实验了。
今晚花费比较多的时间就在于我们在进行第二套实验的时候,因为我们有源代码的原因,所以就直接看着上手,先不论理解多少,先尝试着run一下
源代码先送上:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Kinect;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private KinectSensor kinect;
public MainWindow()
{
InitializeComponent();
this.Loaded += (s, e) => DiscoverKinectSensor();
this.Unloaded += (s, e) => this.kinect = null;
}
public KinectSensor Kinect
{
get { return this.kinect; }
set
{
//如果带赋值的传感器和目前的不一样
if (this.kinect != value)
{
//如果当前的传感对象不为null
if (this.kinect != null)
{
UninitializeKinectSensor(this.kinect);
//uninitailize当前对象
this.kinect = null;
}
//如果传入的对象不为空,且状态为连接状态
if (value != null && value.Status == KinectStatus.Connected)
{
this.kinect = value;
InitializeKinectSensor(this.kinect);
}
}
}
}
private void DiscoverKinectSensor()
{
KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged;
this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected);
}
private void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e)
{
switch (e.Status)
{
case KinectStatus.Connected:
if (this.kinect == null)
this.kinect = e.Sensor;
break;
case KinectStatus.Disconnected:
if (this.kinect == e.Sensor)
{
this.kinect = null;
this.kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected);
if (this.kinect == null)
{
//TODO:通知用于Kinect已拔出
}
}
break;
//TODO:处理其他情况下的状态
}
}
private void InitializeKinectSensor(KinectSensor kinectSensor)
{
if (kinectSensor != null)
{
kinectSensor.ColorStream.Enable();
kinectSensor.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(kinectSensor_ColorFrameReady);
kinectSensor.Start();
}
}
private void UninitializeKinectSensor(KinectSensor kinectSensor)
{
if (kinectSensor != null)
{
kinectSensor.Stop();
kinectSensor.ColorFrameReady -= new EventHandler<ColorImageFrameReadyEventArgs>(kinectSensor_ColorFrameReady);
}
}
void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
using (ColorImageFrame frame = e.OpenColorImageFrame())
{
if (frame != null)
{
byte[] pixelData = new byte[frame.PixelDataLength];
frame.CopyPixelDataTo(pixelData);
ColorImageElement.Source = BitmapImage.Create(frame.Width, frame.Height, 96, 96,
PixelFormats.Bgr32, null, pixelData,
frame.Width * frame.BytesPerPixel);
}
}
}
}
}
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<Grid>
<Image x:Name="ColorImageElement"></Image>
</Grid>
</Window>
在调试的时候,有这么几个问题可能是大家会发生的。
大家在创建工程的时候记得要选择WPF应用程序
其次,要注意命名空间,文件名不要照抄代码
当然,大家要记得添加引用集,这是初学者很多时候可能会犯的一个错误,也有很多人呢不会做这一步,所以我就图示教学如下:
先点击项目->添加引用
这个时候会弹出一个对话框,在左边选择程序集,之后再右上角的搜索框中搜索“Kinect”关键词,就会出现Microsoft Kinect 在右边有版本号,由于我使用的硬件设备是kinect,所以就选择了1.0的版本,大家视情况而定。之后点击确定,就可以引用kinect了。
分享到:
相关推荐
总的来说,Kinect入门涉及到环境配置、设备初始化、骨架跟踪和图像处理等多个方面。对于开发者来说,理解这些基本概念和API是开发基于Kinect的应用程序的关键。通过不断的实践和学习,你可以创建出各种创新的体感...
学KINECT必读,很基础的东西,可以对KINECT2.0有个大概的理解
**经典Kinect入门讲解PPT** "K4W training General.pptx" 这份PPT可能是针对Kinect for Windows(K4W)开发者的入门教程。其中可能包含以下内容: 1. **硬件介绍**:详述Kinect的组成,包括深度传感器、彩色摄像头...
圣哥的资讯站(http://teacher.syset.com)也提供了丰富的连载教程,如《Kinect for Windows - 体感应用程式开发入门》和《建立支援 Kinect 的 WPF 应用程式》,对于理解 Kinect 在 WPF 平台上的应用非常有帮助。...
网上搜到的 分享给大家 喜欢就拿去吧 网上搜到的 分享给大家 喜欢就拿去吧 网上搜到的 分享给大家 喜欢就拿去吧
KinectforWindows2.0入门介绍
【Kinect和Processing入门】是针对交互设计师和程序员的一个教程,主要讲解如何使用Microsoft Kinect传感器与Processing编程语言相结合,实现交互式计算机视觉应用。这篇汉译文档由Daniel Shiffman创作,内容涵盖...
kinect技术编程,c++,例子,方法等核心技术介绍
本资料收集并整理了第二代Kinect入门开发的资料。适合准备利用Kinect开发的学生、爱好者和工作人员。程序主要用WPF开发,也涉及到如何Unity3D和Kinect结合的介绍。资料具体介绍如下: 1.资料内容 提供C#+Kinect...
Kinect for Windows是一款微软开发的体感设备,它允许用户通过身体动作与计算机进行交互,广泛应用于游戏、教育、医疗等多个领域。对于开发者而言,掌握Kinect for Windows的开发技术可以打开新的创新之门。本篇文章...
Kinect开发入门文档主要涵盖了如何配置Kinect的开发环境、安装SDK以及如何创建第一个Kinect项目等相关知识点。以下为详细说明: 1. Kinect设备概述 Kinect设备包括一个电动马达,可以在基座和感应器之间调整俯仰...
包含Kinect2,0的SDK简介以及Kinect2.0与Unity结合简介 以及部分教程
Azure Kinect 开发入门---加油动作识别 Azure Kinect 是微软推出的一个新一代的人体跟踪和DEPTH sensor,具备高精度的人体跟踪能力和强大的计算能力。通过本示例,我们将了解 Azure Kinect 的基本使用和加油动作...
Kinect for Windows SDK 是微软为开发者提供的一种工具包,它允许程序员利用Kinect传感器进行创新性的软件开发。这个SDK主要用于Windows平台,目前仅支持Windows 7操作系统,有32位(x86)和64位(x64)两种版本。在进行...
在这个系列的第一部分,我们将深入探讨Kinect开发入门的理论知识点,帮助开发者理解如何利用Kinect进行体感编程。 1. **Kinect设备介绍**: Kinect是由微软公司开发的一款体感输入设备,它可以捕捉到用户的身体...
本文将深入探讨"Kinect2的各种入门源码例程"中涉及的知识点,包括人体追踪、彩色图像读取、深度图像读取、脸部识别、脸部重建、坐标映射和Fusion技术。 1. 人体追踪: Kinect2的人体追踪功能能够实时检测和跟踪...
本篇文章将深入浅出地介绍Kinect v2.0的开发入门,包括硬件配置、软件开发环境搭建、主要功能模块以及基本例程实现。 1. **硬件配置**:Kinect v2.0包含了高分辨率的彩色相机、深度传感器、红外投影器、麦克风阵列...