kinect2.0 基礎篇第一篇 用C#在Visual Studio上編寫關閉彩色映像的三色通道的某個通道

來源:互聯網
上載者:User

標籤:int   .com   rgs   send   格式   detail   idt   maps   pycon   

網上基於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);
                }
            }
        }

開啟之後效果如下(只留下綠色通道)

 

kinect2.0 基礎篇第一篇 用C#在Visual Studio上編寫關閉彩色映像的三色通道的某個通道

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.