kinect2.0 基础篇第一篇 用C#在Visual Studio上编写关闭彩色图像的三色通道的某个通道...

网上基于kinect2.0 用C#语言编写的小程序太少了 

下面的链接上C#语言的一些基础开发,对于什么都不会的最好手把手敲一遍 
http://blog.csdn.net/app_12062011/article/details/52665048

使用kinect2.0  要求环境如下:

系统win8以上

Usb接口3.0

Direct11 以上

1.新建一个WPF应用程序,首先肯定要添加应用  Microsoft.Kinect

 

2.在WPF 在Grid中 添加一个控件

        <Image x:Name="image"/>

3.后端代码如下

   public partial class MainWindow : Window
    {
        private KinectSensor kinect = null;
        private ColorFrameReader colorFrame = null;
        private WriteableBitmap colorBitmap = null;
        private FrameDescription colorFrameDescription = null;
        private Int32Rect colorBitmapRect;
        private int colorBitmapStride;
        byte[] pixelData = null;

        public MainWindow()
        {
            InitializeComponent();
            this.kinect = KinectSensor.GetDefault();
            this.colorFrame = kinect.ColorFrameSource.OpenReader();
            this.colorFrame.FrameArrived += colorFrame_FrameArrived;
            this.colorFrameDescription = this.kinect.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Bgra);
            pixelData = new byte[colorFrameDescription.LengthInPixels*4];
            //按照Bgra格式设定数据帧的描述信息(B:Blue,G:Green,R:Red,A:Alpha)
            // 1920*1080  彩色图像
            this.colorBitmap = new WriteableBitmap(colorFrameDescription.Width, colorFrameDescription.Height, 96.0, 96.0, PixelFormats.Bgr32, null);
            //根据数据帧的宽高创建colorBitmap的实例
            this.colorBitmapRect = new Int32Rect(0, 0, this.colorBitmap.PixelWidth, colorBitmap.PixelHeight);
            this.colorBitmapStride = this.colorFrameDescription.Width * 4;
            image.Source = this.colorBitmap;
            this.kinect.Open(); //启动kinect摄像头
        }

        void colorFrame_FrameArrived(object sender, ColorFrameArrivedEventArgs e)
        {
            using (ColorFrame frame = e.FrameReference.AcquireFrame())
            //建立一个ColorFrame的实例frame保存送过来的帧,通过using保证走完函数后及时释放相应资源
            {
                if (frame != null)
                {
                    frame.CopyConvertedFrameDataToArray(this.pixelData, ColorImageFormat.Bgra);
                    for (int i = 0; i < pixelData.Length; i +=4) //看来bgra是占4位的
                    {
                        pixelData[i] = 0x00;//关闭蓝色通道
                       // pixelData[i + 1] = 0x00;//关闭绿色通道
                        pixelData[i + 2] = 0x00;//关闭红色通道
                    }
                    this.colorBitmap.WritePixels(this.colorBitmapRect, this.pixelData, this.colorBitmapStride, 0);
                }
            }
        }

开启之后效果如下(只留下绿色通道)

 

posted on 2016-11-14 13:30  1988kxj 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/1988kxj/p/6061530.html

使用Visual Studio调用Kinect采集彩色和深度图像可以通过以下步骤完成。 首先,确保你的计算机已经安装了Kinect for Windows SDK,这是一个软件开发包,提供了与Kinect传感器进行交互的功能。 接下来,打开Visual Studio并创建一个新的项目。选择适合你需求的项目类型,例如一个Windows应用程序。 在项目中添加对Kinect的引用。右键点击项目,选择“添加”->“引用”再点击“浏览”,找到并选择Kinect for Windows SDK的安装目录下的"Microsoft.Kinect.dll"。 现在,你可以通过以下简单的代码片段来调用Kinect并获取彩色和深度图像: ``` using Microsoft.Kinect; // 创建一个Kinect传感器对象 KinectSensor kinect = KinectSensor.GetDefault(); // 打开Kinect传感器 kinect.Open(); // 获取彩色和深度数据的引用 ColorFrameReader colorFrameReader = kinect.ColorFrameSource.OpenReader(); DepthFrameReader depthFrameReader = kinect.DepthFrameSource.OpenReader(); // 定义事件处理方法,用于读取新的彩色和深度图像帧 colorFrameReader.FrameArrived += ColorFrameReader_FrameArrived; depthFrameReader.FrameArrived += DepthFrameReader_FrameArrived; // 创建事件处理方法 private void ColorFrameReader_FrameArrived(object sender, ColorFrameArrivedEventArgs e) { // 获取最新的彩色图像帧 using (ColorFrame colorFrame = e.FrameReference.AcquireFrame()) { // 进行彩色图像的处理 if (colorFrame != null) { // 获取图像数据 // 将图像数据用于你的应用程序 } } } private void DepthFrameReader_FrameArrived(object sender, DepthFrameArrivedEventArgs e) { // 获取最新的深度图像帧 using (DepthFrame depthFrame = e.FrameReference.AcquireFrame()) { // 进行深度图像的处理 if (depthFrame != null) { // 获取图像数据 // 将图像数据用于你的应用程序 } } } ``` 以上代码片段演示了如何使用Kinect传感器获取彩色和深度图像帧,并在事件处理方法中进行图像处理。 最后,确保在代码中的合适位置添加关闭Kinect传感器的代码,以释放资源: ``` // 关闭彩色和深度图像读取器 colorFrameReader.Dispose(); depthFrameReader.Dispose(); // 关闭Kinect传感器 kinect.Close(); ``` 通过上述步骤,你可以使用Visual Studio调用Kinect传感器并获取彩色和深度图像。请根据你的需求进一步扩展代码以进行更多的图像处理或其他应用程序开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值