日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kinect V2 基础教程之彩色图像

發布時間:2024/4/17 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kinect V2 基础教程之彩色图像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  本程序為自己所寫,參考素材包括微軟官方例子和外文資料,自己做了部分的優化。解釋的如果有問題,懇請大家指正.

后臺代碼:

using System.ComponentModel; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; using Microsoft.Kinect;namespace KinectV2 {/// <summary>/// MainWindow.xaml /// </summary>public partial class MainWindow : Window{#region 定義變量// kinect設備 KinectSensor kinect;//彩色幀讀取 ColorFrameReader colorFrameReader;//一幀圖像的性質描述 FrameDescription colorFrameDesc;//枚舉類型,定義彩色幀的格式(共6種)//此處規定彩色幀格式為Bgra格式:4字節存儲一個像素點,包含blue,green,red,alpha(即像素點亮度值)ColorImageFormat colorFormat = ColorImageFormat.Bgra;//創建用于顯示圖像的位圖 WriteableBitmap colorBitmap;//用于存放一幀彩色圖像的所有信息(byte 類型,每個元素占一個字節) byte[] colorBuffer;//一幀彩色圖像的步長(物理意義:此處表示一幀圖像的每一行需占用的字節個數)(作用:渲染位圖時需要提供圖像的步長)int colorStride;//存放彩色圖像的矩形畫布(作用:渲染位圖時需要提供畫布位置和大小) Int32Rect colorRect;#endregionpublic MainWindow(){InitializeComponent();#region 變量初始化、賦值// 獲取默認的kinect傳感器kinect = KinectSensor.GetDefault();//啟動傳感器 kinect.Open();//確定彩色幀的數據類型colorFrameDesc = kinect.ColorFrameSource.CreateFrameDescription(colorFormat);// 創建并返回一個新的讀取對象colorFrameReader = kinect.ColorFrameSource.OpenReader();//觸發彩色幀事件colorFrameReader.FrameArrived += colorFrameReader_FrameArrived;//彩色位圖初始化(96,96表示分辨率,即96像素/英寸)colorBitmap = new WriteableBitmap(colorFrameDesc.Width, colorFrameDesc.Height, 96, 96, PixelFormats.Bgra32, null);//圖像步長初始化colorStride = colorFrameDesc.Width * (int)colorFrameDesc.BytesPerPixel;//(int)colorFrameDesc.BytesPerPixel = 4,每個像素點占4字節//畫布矩形框初始化colorRect = new Int32Rect(0, 0, colorFrameDesc.Width, colorFrameDesc.Height);//計算總共需要多少個字節才能儲存一幀圖像的所有像素點colorBuffer = new byte[colorStride * colorFrameDesc.Height];//彩色位圖和UI界面圖片控件關聯ImageColor.Source = colorBitmap; //即實時的將獲取的彩色幀信息描繪在ImageColor控件中#endregion}#region 處理來自傳感器的彩色幀 事件//彩色幀觸發事件void colorFrameReader_FrameArrived(object sender, ColorFrameArrivedEventArgs e){//更新彩色幀,然后描繪彩色幀 UpdateColorFrame(e);DrawColorFrame();}private void UpdateColorFrame(ColorFrameArrivedEventArgs e){// 獲取一幀彩色圖像using (var colorFrame = e.FrameReference.AcquireFrame()){if (colorFrame == null){return;}// 將一幀彩色圖像數據以‘colorFormat’格式拷貝放到‘colorBuffer’中 colorFrame.CopyConvertedFrameDataToArray(colorBuffer, colorFormat);}}private void DrawColorFrame(){// 將獲取的一幀彩色圖像數據更新到位圖中colorBitmap.WritePixels(colorRect, colorBuffer, colorStride, 0);}#endregion//程序窗口關閉事件private void Window_Closing(object sender, CancelEventArgs e){// 釋放彩色幀資源if (colorFrameReader != null){colorFrameReader.Dispose();colorFrameReader = null;}//關閉kinect傳感器if (kinect != null){kinect.Close();kinect = null;}}} }

XAML界面代碼:

<Window x:Class="KinectV2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Closing="Window_Closing" ><Grid Width="512" Height="424"><Image x:Name="ImageDepth" /></Grid> </Window>

?

轉載于:https://www.cnblogs.com/Edison25/p/5536809.html

總結

以上是生活随笔為你收集整理的Kinect V2 基础教程之彩色图像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。