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

本文介绍如何使用C#在Visual Studio环境下进行Kinect2.0彩色图像处理,具体实现了关闭彩色图像的三色通道中的两个通道,仅保留绿色通道的程序设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

下面的链接上C#语言的一些基础开发,对于什么都不会的最好手把手敲一遍 
http://blog.youkuaiyun.com/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值