日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上

發(fā)布時間:2023/12/10 windows 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文來自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html

?Kinect產(chǎn)生的景深數(shù)據(jù)作用有限,要利用Kinect創(chuàng)建真正意義上交互,有趣和難忘的應(yīng)用,還需要除了深度數(shù)據(jù)之外的其他數(shù)據(jù)。這就是骨骼追蹤技術(shù)的初衷,骨骼追蹤技術(shù)通過處理景深數(shù)據(jù)來建立人體各個關(guān)節(jié)的坐標(biāo),骨骼追蹤能夠確定人體的各個部分,如那部分是手,頭部,以及身體。骨骼追蹤產(chǎn)生X,Y,Z數(shù)據(jù)來確定這些骨骼點。在上文中,我們討論了景深圖像處理的一些技術(shù)。骨骼追蹤系統(tǒng)采用的景深圖像處理技術(shù)使用更復(fù)雜的算法如矩陣變換,機器學(xué)習(xí)及其他方式來確定骨骼點的坐標(biāo)。

??? 本文首先用一個例子展示骨骼追蹤系統(tǒng)涉及的主要對象,然后在此基礎(chǔ)上詳細(xì)討論骨骼追蹤中所涉及的對象模型。

?

1. 獲取骨骼數(shù)據(jù)

???? 本節(jié)將會創(chuàng)建一個應(yīng)用來將獲取到的骨骼數(shù)據(jù)繪制到UI界面上來。在開始編碼前,首先來看看一些基本的對象以及如何從這些對象中如何獲取骨骼數(shù)據(jù)。在進行數(shù)據(jù)處理之前了解數(shù)據(jù)的格式也很有必要。這個例子很簡單明了,只需要骨骼數(shù)據(jù)對象然后將獲取到的數(shù)據(jù)繪制出來。

??? 彩色影像數(shù)據(jù),景深數(shù)據(jù)分別來自ColorImageSteam和DepthImageStream,同樣地,骨骼數(shù)據(jù)來自SkeletonStream。訪問骨骼數(shù)據(jù)和訪問彩色影像數(shù)據(jù)、景深數(shù)據(jù)一樣,也有事件模式和 “拉”模式兩種方式。在本例中我們采用基于事件的方式,因為這種方式簡單,代碼量少,并且是一種很普通基本的方法。KinectSensor對象有一個名為SkeletonFrameReady事件。當(dāng)SkeletonStream中有新的骨骼數(shù)據(jù)產(chǎn)生時就會觸發(fā)該事件。通過AllFramesReady事件也可以獲取骨骼數(shù)據(jù)。在下一節(jié)中,我們將會詳細(xì)討論骨骼追蹤對象模型,現(xiàn)在我們只展示如何從SkeletonStream流中獲取骨骼數(shù)據(jù)。SkeletonStream產(chǎn)生的每一幀數(shù)據(jù)都是一個骨骼對象集合。每一個骨骼對象包含有描述骨骼位置以及骨骼關(guān)節(jié)的數(shù)據(jù)。每一個關(guān)節(jié)有一個唯一標(biāo)示符如頭(head)、肩(shoulder)、肘(dlbow)等信息和3D向量數(shù)據(jù)。

??? 現(xiàn)在來寫代碼。首先創(chuàng)建一個新的wpf工程文件,添加Microsoft.Kinect.dll。添加基本查找和初始化傳感器的代碼,這些代碼參考之前的文章。在開始啟動傳感器之前,初始化SkeletonStream數(shù)據(jù)流,并注冊KinectSensor對象的SkeletonFrameReady事件,這個例子沒有使用彩色攝像機和紅外攝像機產(chǎn)生的數(shù)據(jù),所以不需要初始化這些數(shù)據(jù)流。UI界面采用默認(rèn)的,將Grid的名稱改為LayoutRoot,之后就再Grid里面繪制。代碼如下:

<Window x:Class="KinectSkeletonTracking.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 x:Name="LayoutRoot" Background="White"></Grid> </Window>

后臺邏輯代碼如下:

private KinectSensor kinectDevice; private readonly Brush[] skeletonBrushes;//繪圖筆刷 private Skeleton[] frameSkeletons;public MainWindow() {InitializeComponent();skeletonBrushes = new Brush[] { Brushes.Black, Brushes.Crimson, Brushes.Indigo, Brushes.DodgerBlue, Brushes.Purple, Brushes.Pink };KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged;this.KinectDevice = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected);}public KinectSensor KinectDevice {get { return this.kinectDevice; }set{if (this.kinectDevice != value){//Uninitializeif (this.kinectDevice != null){this.kinectDevice.Stop();this.kinectDevice.SkeletonFrameReady -= KinectDevice_SkeletonFrameReady;this.kinectDevice.SkeletonStream.Disable();this.frameSkeletons = null;}this.kinectDevice = value;//Initializeif (this.kinectDevice != null){if (this.kinectDevice.Status == KinectStatus.Connected){this.kinectDevice.SkeletonStream.Enable();this.frameSkeletons = new Skeleton[this.kinectDevice.SkeletonStream.FrameSkeletonArrayLength];this.kinectDevice.SkeletonFrameReady += KinectDevice_SkeletonFrameReady;this.kinectDevice.Start();}}}} }private void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e) {switch (e.Status){case KinectStatus.Initializing:case KinectStatus.Connected:case KinectStatus.NotPowered:case KinectStatus.NotReady:case KinectStatus.DeviceNotGenuine:this.KinectDevice = e.Sensor;break;case KinectStatus.Disconnected://TODO: Give the user feedback to plug-in a Kinect device. this.KinectDevice = null;break;default://TODO: Show an error statebreak;} }

? 以上代碼中,值得注意的是frameSkeletons數(shù)組以及該數(shù)組如何在流初始化時進行內(nèi)存分配的。Kinect能夠追蹤到的骨骼數(shù)量是一個常量。這使得我們在整個應(yīng)用程序中能夠一次性的為數(shù)組分配內(nèi)存。為了方便,Kinect SDK在SkeletonStream對象中定義了一個能夠追蹤到的骨骼個數(shù)常量FrameSkeletonArrayLength,使用這個常量可以方便的對數(shù)組進行初始化。代碼中也定義了一個筆刷數(shù)組,這些筆刷在繪制骨骼時對多個游戲者可以使用不同的顏色進行繪制。也可以將筆刷數(shù)組中的顏色設(shè)置為自己喜歡的顏色。

???? 下面的代碼展示了SkeletonFrameReady事件的響應(yīng)方法,每一次事件被激發(fā)時,通過調(diào)用事件參數(shù)的OpenSkeletonFrame方法就能夠獲取當(dāng)前的骨骼數(shù)據(jù)幀。剩余的代碼遍歷骨骼數(shù)據(jù)幀的Skeleton數(shù)組frameSkeletons,在UI界面通過關(guān)節(jié)點將骨骼連接起來,用一條直線代表一根骨骼。UI界面簡單,將Grid元素作為根結(jié)點,并將其背景設(shè)置為白色。

private void KinectDevice_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) {using (SkeletonFrame frame = e.OpenSkeletonFrame()){if (frame != null){Polyline figure;Brush userBrush;Skeleton skeleton;LayoutRoot.Children.Clear();frame.CopySkeletonDataTo(this.frameSkeletons);for (int i = 0; i < this.frameSkeletons.Length; i++){skeleton = this.frameSkeletons[i];if (skeleton.TrackingState == SkeletonTrackingState.Tracked){userBrush = this.skeletonBrushes[i % this.skeletonBrushes.Length];//繪制頭和軀干figure = CreateFigure(skeleton, userBrush, new[] { JointType.Head, JointType.ShoulderCenter, JointType.ShoulderLeft, JointType.Spine,JointType.ShoulderRight, JointType.ShoulderCenter, JointType.HipCenter});LayoutRoot.Children.Add(figure);figure = CreateFigure(skeleton, userBrush, new[] { JointType.HipLeft, JointType.HipRight });LayoutRoot.Children.Add(figure);//繪制作腿figure = CreateFigure(skeleton, userBrush, new[] { JointType.HipCenter, JointType.HipLeft, JointType.KneeLeft, JointType.AnkleLeft, JointType.FootLeft });LayoutRoot.Children.Add(figure);//繪制右腿figure = CreateFigure(skeleton, userBrush, new[] { JointType.HipCenter, JointType.HipRight, JointType.KneeRight, JointType.AnkleRight, JointType.FootRight });LayoutRoot.Children.Add(figure);//繪制左臂figure = CreateFigure(skeleton, userBrush, new[] { JointType.ShoulderLeft, JointType.ElbowLeft, JointType.WristLeft, JointType.HandLeft });LayoutRoot.Children.Add(figure);//繪制右臂figure = CreateFigure(skeleton, userBrush, new[] { JointType.ShoulderRight, JointType.ElbowRight, JointType.WristRight, JointType.HandRight });LayoutRoot.Children.Add(figure);}}}} }

? 循環(huán)遍歷frameSkeletons對象,每一次處理一個骨骼,在處理之前需要判斷是否是一個追蹤好的骨骼,可以使用Skeleton對象的TrackingState屬性來判斷,只有骨骼追蹤引擎追蹤到的骨骼我們才進行繪制,忽略哪些不是游戲者的骨骼信息即過濾掉那些TrackingState不等于SkeletonTrackingState.Tracked的骨骼數(shù)據(jù)。Kinect能夠探測到6個游戲者,但是同時只能夠追蹤到2個游戲者的骨骼關(guān)節(jié)位置信息。在后面我們將會詳細(xì)討論TrackingState這一屬性。

???? 處理骨骼數(shù)據(jù)相對簡單,首先,我們根Kinect追蹤到的游戲者的編號,選擇一種顏色筆刷。然后利用這只筆刷繪制曲線。CreateFigure方法為每一根骨骼繪制一條直線。GetJointPoint方法在繪制骨骼曲線中很關(guān)鍵。該方法以關(guān)節(jié)點的三維坐標(biāo)作為參數(shù),然后調(diào)用KinectSensor對象的MapSkeletonPointToDepth方法將骨骼坐標(biāo)轉(zhuǎn)換到深度影像坐標(biāo)上去。后面我們將會討論為什么需要這樣轉(zhuǎn)換以及如何定義坐標(biāo)系統(tǒng)?,F(xiàn)在我們只需要知道的是,骨骼坐標(biāo)系和深度坐標(biāo)及彩色影像坐標(biāo)系不一樣,甚至和UI界面上的坐標(biāo)系不一樣。在開發(fā)Kinect應(yīng)用程序中,從一個坐標(biāo)系轉(zhuǎn)換到另外一個坐標(biāo)系這樣的操作非常常見,GetJointPoint方法的目的就是將骨骼關(guān)節(jié)點的三維坐標(biāo)轉(zhuǎn)換到UI繪圖坐標(biāo)系統(tǒng),返回該骨骼關(guān)節(jié)點在UI上的位置。下面的代碼展示了CreateFigure和GetJointPoint這兩個方法。

private Polyline CreateFigure(Skeleton skeleton, Brush brush, JointType[] joints) {Polyline figure = new Polyline();figure.StrokeThickness = 8;figure.Stroke = brush;for (int i = 0; i < joints.Length; i++){figure.Points.Add(GetJointPoint(skeleton.Joints[joints[i]]));}return figure; }private Point GetJointPoint(Joint joint) {DepthImagePoint point = this.KinectDevice.MapSkeletonPointToDepth(joint.Position, this.KinectDevice.DepthStream.Format);point.X *= (int)this.LayoutRoot.ActualWidth / KinectDevice.DepthStream.FrameWidth;point.Y *= (int)this.LayoutRoot.ActualHeight / KinectDevice.DepthStream.FrameHeight;return new Point(point.X, point.Y); }

值得注意的是,骨骼關(guān)節(jié)點的三維坐標(biāo)中我們舍棄了Z值,只用了X,Y值。Kinect好不容易為我們提供了每一個節(jié)點的深度數(shù)據(jù)(Z值)而我們卻沒有使用,這看起來顯得很浪費。其實不是這樣的,我們使用了節(jié)點的Z值,只是沒有直接使用,沒有在UI界面上展現(xiàn)出來而已。在坐標(biāo)空間轉(zhuǎn)換中是需要深度數(shù)據(jù)的??梢栽囋囋贕etJointPoint方法中,將joint的Position中的Z值改為0,然后再調(diào)用MapSkeletonPointToDepth方法,你會發(fā)現(xiàn)返回的對象中x和y值均為0,可以試試,將圖像以Z值進行等比縮放,可以發(fā)現(xiàn)圖像的大小是和Z值(深度)成反的。也就是說,深度值越小,圖像越大,即人物離Kinect越近,骨骼數(shù)據(jù)越大。

???? 運行程序,會得到如下骨骼圖像,這個是手握鍵盤準(zhǔn)備截圖的姿勢。一開始可能需要調(diào)整一些Form窗體的大小。程序會為每一個游戲者以一種顏色繪制骨骼圖像,可以試著在Kinect前面移動,可以看到骨骼圖像的變化,也可以走進然后走出圖像以觀察顏色的變化。仔細(xì)觀察有時候可以看到繪圖出現(xiàn)了一些奇怪的圖案,在討論完骨骼追蹤相關(guān)的API之后,就會明白這些現(xiàn)象出現(xiàn)的原因了。

?

?

2. 骨骼對象模型

??? Kinect SDK中骨骼追蹤有一些和其他對象不一樣的對象結(jié)構(gòu)和枚舉。在SDK中骨骼追蹤相關(guān)的內(nèi)容幾乎占據(jù)了三分之一的內(nèi)容,可見Kinect中骨骼追蹤技術(shù)的重要性。下圖展示了骨骼追蹤系統(tǒng)中涉及到的一些主要的對象模型。有四個最主要的對象,他們是SkeletonStream,SkeletonFrame,Skeleton和Joint。下面將詳細(xì)介紹這四個對象。

?

2.1 SkeletonStream對象

??? SkeletonStream對象產(chǎn)生SkeletonFrame。從SkeletonStream獲取骨骼幀數(shù)據(jù)和從ColorStream及DepthStream中獲取數(shù)據(jù)類似??梢宰許keletonFrameReady事件或者AllFramesReady事件通過事件模型來獲取數(shù)據(jù),或者是使用OpenNextFrame方法通過“拉”模型來獲取數(shù)據(jù)。不能對同一個SkeletonStream同時使用這兩種模式。如果注冊了SkeletonFrameReady事件然后又調(diào)用OpenNextFrame方法將會返回一個InvalidOperationException異常。

?

SkeletonStream的啟動和關(guān)閉

??? 除非啟動了SkeletonStream對象,否則,不會產(chǎn)生任何數(shù)據(jù),默認(rèn)情況下,SkeletonStream對象是關(guān)閉的。要使SkeletonStream產(chǎn)生數(shù)據(jù),必須調(diào)用對象的Enabled方法。相反,調(diào)用Disable方法能夠使SkeletonStream對象暫停產(chǎn)生數(shù)據(jù)。SkeletonStream有一個IsEnabled方法來描述當(dāng)前SkeletonStream對象的狀態(tài)。只有SkeletonStream對象啟動了,KinectSensor對象的SkeletonFrameReady事件才能被激活。如果要使用“拉”模式來獲取數(shù)據(jù)SkeletonStream也必須啟動后才能調(diào)用OpenNextFrame方法。否則也會拋出InvalidOperationException異常。

??? 一般地在應(yīng)用程序的聲明周期中,一旦啟動了SkeletonStream對象,一般會保持啟動狀態(tài)。但是在有些情況下,我們希望關(guān)閉SkeletonStream對象。比如在應(yīng)用程序中使用多個Kinect傳感器時。只有一個Kinect傳感器能夠產(chǎn)生骨骼數(shù)據(jù),這也意味著,即使使用多個Kinect傳感器,同時也只能追蹤到兩個游戲者的骨骼數(shù)據(jù)信息。在應(yīng)用程序執(zhí)行的過程中,有可能會關(guān)閉某一個Kinect傳感器的SkeletonStream對象而開啟另一個Kinect傳感器的SkeletonStream對象。

??? 另一個有可能關(guān)閉骨骼數(shù)據(jù)產(chǎn)生的原因是出于性能方面的考慮,骨骼數(shù)據(jù)處理是很耗費計算性能的操作。打開骨骼追蹤是可以觀察的到CPU的占用率明顯增加。當(dāng)不需要骨骼數(shù)據(jù)時,關(guān)閉骨骼追蹤很有必要。例如,在有些游戲場景中可能在展現(xiàn)一些動畫效果或者播放視頻,在這個動畫效果或者視頻播放時,停止骨骼追蹤可能可以使得游戲更加流暢。

??? 當(dāng)然關(guān)閉SkeletonStream也有一些副作用。當(dāng)SkeletonStream的狀態(tài)發(fā)生改變時,所有的數(shù)據(jù)產(chǎn)生都會停止和從新開始。SkeletonStream的狀態(tài)改變會使傳感器重新初始化,將TimeStamp和FrameNumber重置為0。在傳感器重新初始化時也有幾毫秒的延遲。

?

平滑化

??? 在前面的例子中,會注意到,骨骼運動會呈現(xiàn)出跳躍式的變化。有幾個原因會導(dǎo)致出現(xiàn)這一問題,可能是應(yīng)用程序的性能,游戲者的動作不夠連貫,也有可能是Kinect硬件的性能問題。骨骼關(guān)節(jié)點的相對位置可能在幀與幀之間變動很大,這回對應(yīng)用程序產(chǎn)生一些負(fù)面的影像。除了會影像用戶體驗和不愉快意外,也可能會導(dǎo)致用戶的形象或者手的顫動抽搐而使用戶感到迷惑。

??? SkeletonStream對象有一種方法能夠解決這個問題。他通過將骨骼關(guān)節(jié)點的坐標(biāo)標(biāo)準(zhǔn)化來減少幀與幀之間的關(guān)節(jié)點位置差異。當(dāng)初始化SkeletonStream對象調(diào)用重載的Enable方法時可以傳入一個TransformSmoothParameters參數(shù)。SkeletonStream對象有兩個與平滑有關(guān)只讀屬性:IsSmoothingEnabled和SmoothParameters。當(dāng)調(diào)用Enable方法傳入了TransformSmoothParameters是IsSmoothingEnabled返回true而當(dāng)使用默認(rèn)的不帶參數(shù)的Enable方法初始化時,IsSmoothingEnabled對象返回false。SmoothParameters屬性用來存儲定義平滑參數(shù)。TransformSmoothParameters這個結(jié)構(gòu)定義了一些屬性:

  • 修正值(Correction)屬性,接受一個從0-1的浮點型。值越小,修正越多。
  • 抖動半徑(JitterRadius)屬性,設(shè)置修正的半徑,如果關(guān)節(jié)點“抖動”超過了設(shè)置的這個半徑,將會被糾正到這個半徑之內(nèi)。該屬性為浮點型,單位為米。
  • 最大偏離半徑(MaxDeviationRadius)屬性,用來和抖動半徑一起來設(shè)置抖動半徑的最大邊界。任何超過這一半徑的點都不會認(rèn)為是抖動產(chǎn)生的,而被認(rèn)定為是一個新的點。該屬性為浮點型,單位為米。
  • 預(yù)測幀大小(Prediction)屬性,返回用來進行平滑需要的骨骼幀的數(shù)目。
  • 平滑值(Smoothing)屬性,設(shè)置處理骨骼數(shù)據(jù)幀時的平滑量,接受一個0-1的浮點值,值越大,平滑的越多。0表示不進行平滑。

??? 對骨骼關(guān)節(jié)點進行平滑處理會產(chǎn)生性能開銷。平滑處理的越多,性能消耗越大。設(shè)置平滑參數(shù)沒有經(jīng)驗可以遵循。需要不斷的測試和調(diào)試已達到最好的性能和效果。在程序運行的不同階段,可能需要設(shè)置不同的平滑參數(shù)。

Note:SDK使用霍爾特指數(shù)平滑(Holt Double Exponential Smoothing)來對減少關(guān)節(jié)點的抖動。指數(shù)平滑數(shù)據(jù)處理與時間有關(guān)。骨骼數(shù)據(jù)是時間序列數(shù)據(jù),因為骨骼引擎會以某一時間間隔不斷產(chǎn)生一幀一幀的骨骼數(shù)據(jù)。平滑處理使用統(tǒng)計方法進行滑動平均,這樣能夠減少時間序列數(shù)據(jù)中的噪聲和極值。類似的處理方法最開始被用于金融市場和經(jīng)濟數(shù)據(jù)的預(yù)測。

?

骨骼追蹤對象選擇

??? 默認(rèn)情況下,骨骼追蹤引擎會對視野內(nèi)的所有活動的游戲者進行追蹤。但只會選擇兩個可能的游戲者產(chǎn)生骨骼數(shù)據(jù),大多數(shù)情況下,這個選擇過程不確定。如果要自己選擇追蹤對象,需要使用AppChoosesSkeletons屬性和ChooseSkeletons方法。 默認(rèn)情況下AppChoosesSkeleton屬性為false,骨骼追蹤引擎追蹤所有可能的最多兩個游戲者。要手動選擇追蹤者,需要將AppChoosesSkeleton設(shè)置為true,并調(diào)用ChooseSkeletons方法,傳入TrackingIDs已表明需要追蹤那個對象。ChooseSkeletons方法接受一個,兩個或者0個TrackingIDs。當(dāng)ChooseSkeletons方法傳入0個參數(shù)時,引擎停止追蹤骨骼信息。有一些需要注意的地方:

  • 如果調(diào)用ChooseSkeletons方法時AppChoosesSkeletons的屬性為false,就會引發(fā)InvalidOperationExcepthion的異常。
  • 如果在SkeletonStream開啟前,經(jīng)AppChoosesSkeletons設(shè)置為true,只有手動調(diào)用ChooseSkeleton方法后才會開始骨骼追蹤。
  • 在AppChoosesSkeletons設(shè)置為 true之前,骨骼引擎自動選擇追蹤的游戲者,并且繼續(xù)保持這些該游戲者的追蹤,直到用戶手動指定需要追蹤的游戲者。如果自動選擇追蹤的游戲者離開場景,骨骼引擎不會自動更換追蹤者。
  • 將AppChoosesSkeletons沖新設(shè)置為false后,骨骼引擎會繼續(xù)對之前手動設(shè)置的游戲者進行追蹤,直到這些游戲者離開視野。當(dāng)游戲這離開視野時骨骼引擎才會選擇其他的可能的游戲者進行追蹤。

?

2.2 SkeletonFrame

??? SkeletonStream產(chǎn)生SkeletonFrame對象。可以使用事件模型從事件參數(shù)中調(diào)用OpenSkeletonFrame方法來獲取SkeletonFrame對象,或者采用”拉”模型調(diào)用SkeletonStream的OpenNextFrame來獲取SkeletonFrame對象。SkeletonFrame對象會存儲骨骼數(shù)據(jù)一段時間。同以通過調(diào)用SkeletonFrame對象的CopySkeletonDataTo方法將其保存的數(shù)據(jù)拷貝到骨骼對象數(shù)組中。SkeletonFrame對象有一個SkeletonArrayLength的屬性,這個屬性表示追蹤到的骨骼信息的個數(shù)。

?

時間標(biāo)記字段

??? SkeletonFrame的FrameNumber和Timestamp字段表示當(dāng)前記錄中的幀序列信息。FrameNumber是景深數(shù)據(jù)幀中的用來產(chǎn)生骨骼數(shù)據(jù)幀的幀編號。幀編號通常是不連續(xù)的,但是之后的幀編號一定比之前的要大。骨骼追蹤引擎在追蹤過程中可能會忽略某一幀深度數(shù)據(jù),這跟應(yīng)用程序的性能和每秒產(chǎn)生的幀數(shù)有關(guān)。例如,在基于事件獲取骨骼幀信息中,如果事件中處理幀數(shù)據(jù)的時間過長就會導(dǎo)致這一幀數(shù)據(jù)還沒有處理完就產(chǎn)生了新的數(shù)據(jù),那么這些新的數(shù)據(jù)就有可能被忽略了。如果采用“拉”模型獲取幀數(shù)據(jù),那么取決于應(yīng)用程序設(shè)置的骨骼引擎產(chǎn)生數(shù)據(jù)的頻率,即取決于深度影像數(shù)據(jù)產(chǎn)生骨骼數(shù)據(jù)的頻率。

Timestap字段記錄字Kinect傳感器初始化以來經(jīng)過的累計毫秒時間。不用擔(dān)心FrameNumber或者Timestamp字段會超出上限。FrameNumber是一個32位的整型,Timestamp是64位整型。如果應(yīng)用程序以每秒30幀的速度產(chǎn)生數(shù)據(jù),應(yīng)用程序需要運行2.25年才會達到FrameNumber的限,此時Timestamp離上限還很遠。另外在Kinect傳感器每一次初始化時,這兩個字段都會初始化為0??梢哉J(rèn)為FrameNumber和Timestamp這兩個值是唯一的。

這兩個字段在分析處理幀序列數(shù)據(jù)時很重要,比如進行關(guān)節(jié)點值的平滑,手勢識別操作等。在多數(shù)情況下,我們通常會處理幀時間序列數(shù)據(jù),這兩個字段就顯得很有用。目前SDK中并沒有包含手勢識別引擎。在未來SDK中加入手勢引擎之前,我們需要自己編寫算法來對幀時間序列進行處理來識別手勢,這樣就會大量依賴這兩個字段。

?

幀描述信息

??? FloorClipPlane字段是一個有四個元素的元組Tuple<int,int,int,int>,每一個都是Ax+By+Cz+D=0地面平面(floor plane)表達式里面的系數(shù)項。元組中第一個元素表示A,即x前面的系數(shù),一次類推,最后一個表示常數(shù)項,通常為負(fù)數(shù),是Kinect距離地面高度。在可能的情況下SDK會利用圖像處理技術(shù)來確定這些系數(shù)。但是有時候這些系數(shù)不肯能能夠確定下來,可能需要預(yù)估。當(dāng)?shù)孛娌荒艽_定時FloorClipPlane中的所有元素均為0.

?

2.3 Skeleton

??? Skeleton類定義了一系列字段來描述骨骼信息,包括描述骨骼的位置以及骨骼中關(guān)節(jié)可能的位置信息。骨骼數(shù)據(jù)可以通過調(diào)用SkeletonFrame對象的CopySkeletonDataTo方法獲得Skeleton數(shù)組。CopySkeletonDataTo方法有一些不可預(yù)料的行為,可能會影響內(nèi)存使用和其引用的骨骼數(shù)組對象。產(chǎn)生的每一個骨骼數(shù)組對象數(shù)組都是唯一的。以下面代碼為例:

Skeleton[] skeletonA = new Skeleton[frame.SkeletonArrayLength]; Skeleton[] skeletonB = new Skeleton[frame.SkeletonArrayLength];frame.CopySkeletonDataTo(skeletonA); frame.CopySkeletonDataTo(skeletonB);Boolean resultA = skeletonA[0] == skeletonB[0];//false Boolean resultB = skeletonA[0].TrackingId == skeletonB[0].TrackingId;//true

上面的代碼可以看出,使用CopySkeletonDataTo是深拷貝對象,會產(chǎn)生兩個不同的Skeleton數(shù)組對象。

?

TrackingID

??? 骨骼追蹤引擎對于每一個追蹤到的游戲者的骨骼信息都有一個唯一編號。這個值是整型,他會隨著新的追蹤到的游戲者的產(chǎn)生添加增長。和之前幀序號一樣,這個值并不是連續(xù)增長的,但是能保證的是后面追蹤到的對象的編號要比之前的編號大。另外,這個編號的產(chǎn)生是不確定的。如果骨骼追蹤引擎失去了對游戲者的追蹤,比如說游戲者離開了Kinect的視野,那么這個對應(yīng)的唯一編號就會過期。當(dāng)Kinect追蹤到了一個新的游戲者,他會為其分配一個新的唯一編號,編號值為0表示這個骨骼信息不是游戲者的,他在集合中僅僅是一個占位符。應(yīng)用程序使用TrackingID來指定需要骨骼追蹤引擎追蹤那個游戲者。調(diào)用SkeletonStream對象的ChooseSkeleton能以初始化對指定游戲這的追蹤。

?

TrackingState

??? 該字段表示當(dāng)前的骨骼數(shù)據(jù)的狀態(tài)。下表展示了SkeletonTrackingState枚舉的可能值機器含義:

?

Position

??? Position一個SkeletonPoint類型的字段,代表所有骨骼的中間點。身體的中間點和脊柱關(guān)節(jié)的位置相當(dāng)。改字段提供了一個最快且最簡單的所有視野范圍內(nèi)的游戲者位置的信息,而不管其是否在追蹤狀態(tài)中。在一些應(yīng)用中,如果不用關(guān)心骨骼中具體的關(guān)節(jié)點的位置信息,那么該字段對于確定游戲者的位置狀態(tài)已經(jīng)足夠。該字段對于手動選擇要追蹤的游戲者(SkeletonStream.ChooseSkeleton)也是一個參考。例如,應(yīng)用程序可能需要追蹤距離Kinect最近的且處于追蹤狀態(tài)的游戲者,那么該字段就可以用來過濾掉其他的游戲者。

ClippedEdges

??? ClippedEdges字段用來描述追蹤者的身體哪部分位于Kinect的視野范圍外。他大體上提供了一個追蹤這的位置信息。使用這一屬性可以通過程序調(diào)整Kinect攝像頭的俯仰角或者提示游戲者讓其返回到視野中來。該字段類型為FrameEdges,他是一個枚舉并且有一個FlagsAtrribute自定義屬性修飾。這意味著ClippedEdges字段可以一個或者多個FrameEdges值。下面列出了FrameEdges的所有可能的值。

?

??? 當(dāng)游戲者身體的某一部分超出Kinect視場范圍時,就需要對骨骼追蹤產(chǎn)生的數(shù)據(jù)進行某些改進,因為某些部位的數(shù)據(jù)可能追蹤不到或者不準(zhǔn)確。最簡單的解決辦法就是提示游戲者身體超出了Kinect的某一邊界范圍讓游戲者回到視場中來。例如,有時候應(yīng)用程序可能不關(guān)心游戲者超出Kinect視場下邊界的情況,但是如果超出了左邊界或者右邊界時就會對應(yīng)用產(chǎn)生影響,這是可以針對性的給游戲者一些提示。另一個解決辦法是調(diào)整Kinect設(shè)備的物理位置。Kinect底座上面有一個小的馬達能夠調(diào)整Kinect的俯仰角度。俯仰角度可以通過更改KinectSensor對象的ElevationAnagle屬性來進行調(diào)整。如果應(yīng)用程序?qū)τ谟螒蛘吣_部動作比較關(guān)注,那么通過程序調(diào)整Kinect的俯仰角能夠決絕腳部超出視場下界的情況。

??? ElevationAnagle以度為單位。KinectSensor的MaxElevationAngle和MinElevationAngle確定了可以調(diào)整角度的上下界。任何將ElevationAngle設(shè)置超出上下界的操作將會掏出ArgumentOutOfRangeExcepthion異常。微軟建議不要過于頻繁重復(fù)的調(diào)整俯仰角以免損壞馬達。為了使得開發(fā)這少犯錯誤和保護馬達,SDK限制了每秒能調(diào)整的俯仰角的值。SDK限制了在連續(xù)15次調(diào)整之后要暫停20秒。

?

Joints

?

每一個骨骼對象都有一個Joints字段。該字段是一個JointsCollection類型,它存儲了一些列的Joint結(jié)構(gòu)來描述骨骼中可追蹤的關(guān)節(jié)點(如head,hands,elbow等等)。應(yīng)用程序使用JointsCollection索引獲取特定的關(guān)節(jié)點,并通過節(jié)點的JointType枚舉來過濾指定的關(guān)節(jié)點。即使Kinect視場中沒有游戲者Joints對象也被填充。

?

2.4 Joint

骨骼追蹤引擎能夠跟蹤和獲取每個用戶的近20個點或者關(guān)節(jié)點信息。追蹤的數(shù)據(jù)以關(guān)節(jié)點數(shù)據(jù)展現(xiàn),它有三個屬性。JointType屬性是一個枚舉類型。下圖描述了可追蹤的所有關(guān)節(jié)點。

?

??

???? 每一個關(guān)節(jié)點都有類型為SkeletonPoint的Position屬性,他通過X,Y,Z三個值來描述關(guān)節(jié)點的控件位置。X,Y值是相對于骨骼平面空間的位置,他和深度影像,彩色影像的空間坐標(biāo)系不一樣。KinectSnesor對象有一些列的坐標(biāo)轉(zhuǎn)換方法,可以將骨骼坐標(biāo)點轉(zhuǎn)換到對應(yīng)的深度數(shù)據(jù)影像中去。最后每一個Skeleton對象還有一個JointTrackingState屬性,他描述了該關(guān)節(jié)點的跟蹤狀態(tài)及方式,下面列出了所有的可能值。

?

?

3. 結(jié)語

??? 本文首先通過一個例子展示骨骼追蹤系統(tǒng)所涉及的主要對象,并將骨骼數(shù)據(jù)在UI界面上進行了繪制,在此基礎(chǔ)上詳細(xì)介紹了骨骼追蹤對象模型中涉及到的主要對象,方法和屬性。SDK中骨骼追蹤占了大概三分之一的內(nèi)容,所以熟悉這些對象對于開發(fā)基于Kinect應(yīng)用程序至關(guān)重要。限于篇幅,下一篇文章將會演示一個使用Kinect骨骼追蹤系統(tǒng)開發(fā)的小游戲,然后討論控件坐標(biāo)變換,敬請期待。

轉(zhuǎn)載于:https://www.cnblogs.com/shouhouxiaomuwu/p/3392135.html

總結(jié)

以上是生活随笔為你收集整理的]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

在线观看视频在线观看 | 制服丝袜一区二区 | 欧美日韩另类在线 | 免费在线观看亚洲视频 | 99精品在线视频观看 | 在线免费观看视频一区 | 天天狠狠操 | 最新在线你懂的 | 日本动漫做毛片一区二区 | 网站在线观看日韩 | 欧美日韩一区二区三区免费视频 | 国产中文字幕视频在线观看 | 69国产成人综合久久精品欧美 | 91亚洲综合 | 黄色免费看片网站 | 99精品久久99久久久久 | 久av在线| 天天干天天草天天爽 | 色婷婷六月天 | 精品99在线 | 91高清视频免费 | 天天操夜夜叫 | 亚洲一区二区三区精品在线观看 | 日韩欧美xx | 91在线观看高清 | 日韩三级在线 | 国产精品大全 | 丝袜av网站 | 人人舔人人射 | 日韩一区二区三免费高清在线观看 | 97人人网 | 日韩免费在线看 | 亚洲激情 在线 | 国内精品久久久久 | 欧美国产精品久久久久久免费 | 成人午夜黄色影院 | 国产综合小视频 | 奇米影视8888| 97在线视频观看 | 亚洲区视频在线观看 | 亚洲电影第一页av | 西西www4444大胆视频 | 人人爱人人做人人爽 | 婷婷丁香色综合狠狠色 | 99r在线观看 | 成人av影视观看 | 啪嗒啪嗒免费观看完整版 | 亚洲韩国一区二区三区 | 最新中文字幕在线资源 | 欧美电影在线观看 | 亚洲伦理一区二区 | 国产精品一区二区三区在线播放 | 99热最新精品 | 成年人黄色免费看 | 99在线高清视频在线播放 | 97品白浆高清久久久久久 | 国产精品久久久久久a | 久久精品日产第一区二区三区乱码 | 西西大胆免费视频 | 亚洲视频在线观看 | 人人干人人搞 | 国产视频97| 99操视频| 国产亚洲字幕 | 国产日产高清dvd碟片 | 色综合天天色综合 | 国产免费中文字幕 | 国产精品久久久久久久久久白浆 | 国产午夜一区二区 | 精品毛片在线 | 国产成人久久精品一区二区三区 | 中文字幕在线播放日韩 | 五月婷婷影视 | 91人人爽人人爽人人精88v | 国产黄色精品在线观看 | 国产精品1000 | 午夜精品久久久久久久99 | 久草视频视频在线播放 | 中文字幕超清在线免费 | 国产精品a久久 | 国产女人免费看a级丨片 | 欧美 亚洲 另类 激情 另类 | 欧美激情综合五月色丁香 | 欧美日韩高清一区 | av在线进入 | av福利在线看 | 91久久久国产精品 | 最近中文字幕大全中文字幕免费 | 在线亚洲欧美日韩 | 激情深爱 | 丁香六月激情婷婷 | 久久精品国产亚洲 | 国产免费观看视频 | 国产精品欧美久久久久久 | 欧美精品久久久久久久久久久 | 国产视频久久久久 | 一区二区精品 | 国产手机视频精品 | 色综合久久88色综合天天6 | 精品免费观看视频 | 中文字幕观看视频 | 欧洲激情综合 | 国产一二区视频 | 成 人 黄 色 免费播放 | 国产a级片免费观看 | 日韩一二区在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 亚洲精品欧美精品 | av一本久道久久波多野结衣 | 国产亚洲成av人片在线观看桃 | 制服丝袜一区二区 | 免费日韩av电影 | 在线观看中文av | 天天夜夜狠狠操 | 久久视频精品在线观看 | 伊人开心激情 | 欧美aaa一级 | 在线观看91精品国产网站 | 日韩电影在线观看一区二区 | 一区二区三区免费在线观看视频 | 91资源在线 | 午夜精品999 | 2019中文最近的2019中文在线 | 人人插人人看 | www.狠狠插.com| 久草五月 | 91亚洲精品乱码久久久久久蜜桃 | 欧美精品一区二区蜜臀亚洲 | 2022国产精品视频 | 97爱| 欧美a免费| 国产剧情久久 | 五月天激情在线 | 亚洲91av| 99热在线国产精品 | 久久国产精品一二三区 | 黄色片网站av | 日日干天天射 | 欧美午夜久久久 | 国产91国语对白在线 | 99这里只有精品99 | 69视频永久免费观看 | 一区二区久久久久 | 91视频观看免费 | 国产精品久久久久久久午夜 | 婷婷av网站 | 久久久免费av | 国内毛片毛片 | 亚洲砖区区免费 | 国产97在线观看 | 亚洲激情五月 | 国产 色 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 精品福利av | 欧美精品一区二区三区一线天视频 | 国产精品18久久久久vr手机版特色 | 狠狠色伊人亚洲综合网站色 | 久久成人黄色 | 东方av免费在线观看 | 久久综合精品国产一区二区三区 | 狠狠干网站 | 国产中文a| 欧美日韩国产色综合一二三四 | 日本三级久久久 | 亚洲日本韩国一区二区 | 精品国产伦一区二区三区观看体验 | 色视频在线免费 | 日本电影久久 | 丁香在线视频 | 久久免费视频在线观看6 | 狠狠的日日 | 在线观看亚洲精品视频 | 精品专区一区二区 | 日本久久不卡视频 | 五月婷婷综合在线观看 | 俺要去色综合狠狠 | 九九免费在线观看视频 | 国产xxxx | 日韩一级电影网站 | 天天色天天射天天干 | 亚洲国产免费看 | 国产亚洲一级高清 | 国产网站av| 在线观看av网站 | 在线中文字幕视频 | 国产精品毛片一区视频 | 在线观看国产成人av片 | 国产99久久久精品 | 国内精品久久天天躁人人爽 | 国产不卡一二三区 | 久久久男人的天堂 | 亚洲精品色视频 | 在线观看免费视频你懂的 | 一区二区三区在线免费观看 | 香蕉视频最新网址 | 五月婷婷综合激情 | 免费在线一区二区 | 国产精品一区二区av | 婷婷色网站 | 欧洲激情在线 | 国产激情小视频在线观看 | 看毛片网站 | 欧美专区亚洲专区 | 亚洲永久免费av | 精品国产一区二区三区蜜臀 | 国产99久久99热这里精品5 | 久久人人爽人人爽人人片 | 干亚洲少妇 | 不卡av免费在线观看 | 97电影院在线观看 | 一级免费黄视频 | 狠狠狠狠狠狠 | 国产一级特黄电影 | 精品二区久久 | 亚洲手机av | 久草资源免费 | 人人爱在线视频 | 成人免费视频视频在线观看 免费 | 91亚洲精| 超碰在线国产 | 久久久久久久久久久福利 | 黄色av电影在线观看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 97超视频免费观看 | 波多野结衣在线视频免费观看 | 欧美成人999 | 五月综合色 | 欧美成人精品欧美一级乱 | 日韩av中文| 久久综合精品国产一区二区三区 | 欧美一级性生活片 | 一区二区三区电影在线播 | 中文字幕一区二区三区久久 | 久久8精品 | 国产婷婷久久 | 国产999精品 | 成年人免费在线 | 日本最新中文字幕 | 国产成人精品免费在线观看 | 91麻豆国产 | 手机在线观看国产精品 | 欧美日韩中文字幕综合视频 | 国产亚洲精品精品精品 | 亚洲综合射 | 91成人免费在线 | 韩日在线一区 | 人人澡人人添人人爽一区二区 | 国产五月| 狠狠干中文字幕 | 亚洲开心色| 日韩av影视在线观看 | 天堂av一区二区 | 激情综合婷婷 | 婷婷av电影 | 久久国产日韩 | 久爱精品在线 | 国产女v资源在线观看 | 成年人在线播放视频 | 免费中文字幕在线观看 | www.久久久com| 精品美女国产在线 | 久精品视频在线观看 | 日日摸日日添夜夜爽97 | 精品久久1| 国产精品麻豆一区二区三区 | 亚洲人成人在线 | 在线观看激情av | 91久久影院 | 久久视频免费在线 | 国产原厂视频在线观看 | 婷婷六月久久 | 久久久久黄色 | 欧美日韩激情视频8区 | 国产精品色婷婷视频 | 亚洲国产精品成人av | 成人在线观看av | 中文字幕在线播放一区二区 | 97涩涩视频| 麻豆手机在线 | 国产在线精品一区 | 青春草免费视频 | 午夜精品剧场 | 成年人视频在线免费观看 | 992tv又爽又黄的免费视频 | 人人玩人人添人人澡超碰 | 天天爱天天草 | 久草视频免费看 | 国产精品欧美激情在线观看 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲综合五月天 | 久久夜夜操 | 免费网站在线观看人 | 欧美一级免费黄色片 | 亚洲国产视频在线 | 日韩精品久久久久久久电影竹菊 | 四虎在线视频 | 久久伊人八月婷婷综合激情 | 天天舔夜夜操 | 成人一级片视频 | 天天干天天做 | 国产在线不卡 | 免费看污网站 | 黄色成人免费电影 | 婷婷视频在线播放 | 久久天天躁狠狠躁亚洲综合公司 | 国产综合香蕉五月婷在线 | a级黄色片视频 | 久久精品一二三区 | 午夜久久久久久久久久影院 | 2021国产在线视频 | 97视频在线观看视频免费视频 | 97超碰人人澡人人爱学生 | 天天综合天天综合 | 国产精品永久久久久久久久久 | 国产精品福利在线观看 | 亚洲精品综合欧美二区变态 | 91av视频网站 | 天天草av| 中文超碰字幕 | av片在线观看 | 五月香视频在线观看 | 久久精品8| а天堂中文最新一区二区三区 | 亚洲欧美视屏 | 成人国产一区二区 | 国产精品99免费看 | 日韩精品一区二区在线 | 最近中文字幕高清字幕免费mv | 国产盗摄精品一区二区 | 永久免费精品视频 | 激情电影在线观看 | 97超碰人人网 | 亚洲一级电影视频 | 国产一区黄色 | 欧美精品久久人人躁人人爽 | 免费看亚洲毛片 | 国产精品99久久久精品免费观看 | 3d黄动漫免费看 | 日韩中文幕 | 永久免费视频国产 | 激情视频网页 | 视频99爱 | 日韩视频在线不卡 | 国产淫a | 国产黄色一级大片 | 国产精品国产亚洲精品看不卡 | 精品福利在线视频 | 国产精品日韩在线观看 | 日韩性xxxx| 色婷婷久久一区二区 | 久操中文字幕在线观看 | 久久无码av一区二区三区电影网 | 狠狠躁18三区二区一区ai明星 | 午夜视频久久久 | 国产一二三四在线视频 | 欧美性猛片, | 国产精品久久久久久久久久尿 | 黄网站色视频 | 在线国产专区 | 美女视频黄,久久 | 一区二区精品在线 | 丁香花在线观看免费完整版视频 | 欧美激情精品 | 最近更新好看的中文字幕 | 美女免费黄视频网站 | 欧美在线free | 久久超碰免费 | 伊人久久五月天 | 人人操日日干 | 日韩免 | 99视频免费 | 久久手机在线视频 | 久久久久日本精品一区二区三区 | 日韩电影在线观看一区二区 | 91九色精品 | 国产精品久久99 | 国内精自线一二区永久 | 美女黄频视频大全 | 爱射综合 | 日本在线观看黄色 | 国产在线视频资源 | 国产日韩高清在线 | 欧女人精69xxxxxx | 欧美午夜a| 国产高清不卡一区二区三区 | 久久亚洲区 | 国产手机在线观看 | 久色婷婷 | 97精品国产97久久久久久久久久久久 | 国产精品久久久影视 | www.色五月.com | 久久久这里有精品 | 中国一级片在线观看 | 黄色aaa毛片| 国产精品va在线 | 欧美九九九| 免费在线激情电影 | 国产精品 中文字幕 亚洲 欧美 | 国产丝袜美腿在线 | 亚洲成av片人久久久 | 免费在线观看av网站 | 亚洲狠狠婷婷综合久久久 | 91探花在线| 亚洲精品久久久久久久不卡四虎 | 麻豆视频在线免费 | 最近中文国产在线视频 | 亚洲免费av网站 | 日韩精品久久久久久久电影竹菊 | 成人av影视在线 | 欧美性做爰猛烈叫床潮 | 国模一二三区 | 国内精品久久久 | 免费看的黄网站 | 亚洲五月 | 久久热首页| 国产成人在线网站 | 久久久久久久久影视 | 亚洲mv大片欧洲mv大片免费 | 91在线精品一区二区 | 色婷婷免费视频 | 天天草天天干天天 | 激情视频免费观看 | 国产一区二区久久久久 | 国产欧美三级 | 特级a毛片| 99视频久 | 91av视频免费在线观看 | 天天操偷偷干 | www.夜色321.com| av女优中文字幕在线观看 | 久久久亚洲影院 | 欧美一级黄色网 | 正在播放 国产精品 | 黄色国产大片 | 黄色网址av| 激情av网 | 午夜免费久久看 | 欧美午夜精品久久久久 | 久久国产免 | 国产精品第72页 | 97偷拍视频 | 国产精品麻豆一区二区三区 | 在线观看日韩免费视频 | 最近中文字幕完整高清 | 中文字幕久久精品 | 亚洲精品小视频在线观看 | 日本精品中文字幕在线观看 | 麻豆va一区二区三区久久浪 | 99久久精品视频免费 | 91亚洲在线观看 | 久久福利| 亚洲四虎| 国产免费一区二区三区最新6 | 成人在线视频论坛 | 99在线观看视频网站 | 色综合天天狠天天透天天伊人 | 欧美成人91| 国产成人福利在线观看 | 久草在线综合网 | 一区二区三区在线看 | 欧美久久电影 | 一区二区三区动漫 | 天天天综合网 | 97香蕉久久超级碰碰高清版 | a资源在线 | 亚洲永久免费av | 成人禁用看黄a在线 | 五月天婷婷免费视频 | 欧美黑吊大战白妞欧美 | 99精品视频免费在线观看 | 狠狠五月婷婷 | av中文在线观看 | av在线com | 色婷婷久久久 | 欧美日本国产在线观看 | 欧美福利网址 | 色悠悠久久综合 | 精品久久久99 | 国产一区二区三区免费观看视频 | 成年人在线观看 | 亚洲成年人在线播放 | 久久精品久久99 | www.xxxx变态.com| 久久免费a | 欧洲精品二区 | 日韩在线视频观看免费 | 色综合小说 | 日韩在线观看不卡 | 在线 国产 日韩 | 欧美日韩国产一区二区三区在线观看 | 久久理论影院 | av电影免费看| 国产精品av免费在线观看 | 久久久www成人免费精品张筱雨 | 欧美婷婷综合 | 伊人婷婷激情 | 亚洲精品综合在线 | 久久综合五月天 | 激情久久一区二区三区 | 亚洲v欧美v国产v在线观看 | 成人黄大片 | 亚洲欧美日韩一二三区 | 九九精品久久 | 日韩中出在线 | 美女搞黄国产视频网站 | 99中文字幕在线观看 | 亚洲成免费 | 国内综合精品午夜久久资源 | 久草免费在线观看视频 | 免费观看特级毛片 | 亚洲成人精品在线 | 日本久热 | 成人xxxx | 日韩二区在线观看 | 欧美精品乱码久久久久久按摩 | 天天激情综合网 | 亚洲欧洲日韩 | 在线天堂中文www视软件 | 国产高清久久 | 欧美成人影音 | 色多多污污在线观看 | 精品久久久久久综合日本 | 伊人婷婷色 | 182午夜在线观看 | 国产午夜麻豆影院在线观看 | 中文字幕色在线 | 啪啪免费视频网站 | 日韩精品一区二区免费 | 久久久免费毛片 | 欧美成人精品在线 | 中文字幕在线日亚洲9 | 日日干夜夜爱 | 97品白浆高清久久久久久 | 欧美极品久久 | 国产欧美久久久精品影院 | 久久99精品久久久久婷婷 | 欧美成人基地 | 国产免费久久精品 | www.av在线.com| 国产999视频| 日韩中文字幕免费在线播放 | 久久99久久精品国产 | 在线影视 一区 二区 三区 | 91视视频在线直接观看在线看网页在线看 | 国产免费av一区二区三区 | 色a网| 视频国产 | 99视频网站| 色黄久久久久久 | 国产精品欧美一区二区 | av电影中文 | 在线观看日韩视频 | 国产一级在线免费观看 | 日韩精品国产一区 | 国产精品a久久久久 | 久久看免费视频 | 爱av在线网 | 国产成人福利片 | 天天操天天操天天操天天操天天操天天操 | 黄色特级片 | 偷拍区另类综合在线 | 97高清免费视频 | 日韩精品在线观看视频 | 免费毛片一区二区三区久久久 | 91在线网站| 国产精品久久艹 | 久久亚洲成人网 | 成人免费亚洲 | 99久久精品一区二区成人 | 成年人国产在线观看 | 久久久96 | 国产成人在线免费观看 | 狠狠躁天天躁综合网 | 亚洲欧美综合精品久久成人 | 啪啪动态视频 | 99国产在线观看 | 色在线免费| 欧美激情第八页 | 狠狠干网址 | 亚洲伦理一区二区 | 成人97视频一区二区 | 国产不卡在线观看 | 韩国av在线播放 | 亚洲精品国精品久久99热 | 亚洲精品久久久久中文字幕m男 | 一级片免费在线 | 中文字幕在线观看网站 | 欧美一级看片 | 美女免费av| 国产精品久久久久久久久久久久午夜片 | 五月婷在线播放 | 亚洲理论在线 | 亚洲国产午夜视频 | 激情五月婷婷网 | 日韩av在线一区二区 | 亚洲美女在线一区 | 亚洲综合欧美日韩狠狠色 | 懂色av一区二区三区蜜臀 | 涩涩网站在线观看 | 黄色网在线播放 | 久草在线免费在线观看 | 成人av视屏 | 色婷婷亚洲婷婷 | 国产精品99爱 | 青春草免费视频 | 久久视频这里只有精品 | 狠狠综合久久 | 国产成人精品久久久久蜜臀 | 亚洲人人网 | 99热最新在线 | 久草在线久草在线2 | 久久五月婷婷丁香社区 | 天天激情 | 久久草网站 | 超碰97在线人人 | 久久亚洲综合国产精品99麻豆的功能介绍 | a√资源在线 | av中文字幕第一页 | 69中文字幕| 狠狠狠色狠狠色综合 | 国产成人免费 | 婷婷激情小说网 | 国产精品国产三级国产aⅴ9色 | 日韩精品视频在线观看免费 | 91大神精品视频在线观看 | 日韩欧美一区二区三区黑寡妇 | 国产丝袜网站 | 日日干网| 久草在线免费色站 | 国产成人精品一区在线 | 国产亚洲情侣一区二区无 | 毛片区 | www.com.黄| 麻豆精品传媒视频 | 综合久久久久久 | 国产精品久久99综合免费观看尤物 | 97国产大学生情侣酒店的特点 | 日韩欧美网址 | 欧美伦理电影一区二区 | 欧洲一区二区在线观看 | 日本护士撒尿xxxx18 | 可以免费看av | 午夜精品一区二区三区在线观看 | 亚洲传媒在线 | 在线激情小视频 | 黄色片免费在线 | 日韩av高清在线观看 | 日韩视频二区 | 欧美一区二区三区免费看 | 99中文字幕视频 | 亚洲精品国产精品国产 | 国产主播大尺度精品福利免费 | 欧美日韩在线观看一区二区 | 国产在线一线 | 日日爽夜夜操 | avwww在线观看 | 久久综合狠狠综合久久狠狠色综合 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 米奇狠狠狠888 | av 在线观看| 在线韩国电影免费观影完整版 | 午夜久久久精品 | 婷婷在线精品视频 | 999国内精品永久免费视频 | 欧美一区日韩精品 | 久久夜色精品国产欧美乱 | 久久亚洲私人国产精品va | 在线观看日韩中文字幕 | 国产夫妻性生活自拍 | 中文日韩在线 | 综合久久久久 | 国产精品福利久久久 | 色婷婷狠狠五月综合天色拍 | 国产精品久久久久永久免费观看 | 国产精品成人免费 | 人人澡人人干 | 亚洲精品视频久久 | 中文字幕av在线免费 | 国产韩国日本高清视频 | 日韩在线中文字幕视频 | 久久久久久久久免费 | 一级黄色大片 | 精品少妇一区二区三区在线 | 国产一区二区在线播放视频 | 一区二区影院 | 91久草视频 | 久热爱 | 久久伊人免费视频 | 久久免费毛片视频 | 久久只精品99品免费久23小说 | 亚洲专区视频在线观看 | 人人超碰97 | 在线观看视频免费播放 | 91超国产| 国产精品一区二区三区免费看 | 精品一二三四视频 | 亚洲伦理一区二区 | 日韩久久精品一区二区三区下载 | 天天天色综合 | 狠狠色狠狠色综合系列 | 国产91在| 深夜免费小视频 | 免费精品视频在线 | 91在线中字 | 色婷婷av国产精品 | 久久大片 | 欧美国产日韩一区二区 | 国产精品成人一区二区 | 国产精品一区二区久久久久 | 五月婷在线播放 | 午夜精品电影一区二区在线 | 麻豆94tv免费版 | 亚洲色视频 | 亚洲国产成人在线 | 久久一久久 | 久久免费av电影 | 免费日韩一级片 | 福利视频导航网址 | 久久99精品久久久久久三级 | 狠狠躁夜夜av | 九九热免费在线观看 | 99成人免费视频 | 久久国产免费看 | 欧美色伊人 | 男女全黄一级一级高潮免费看 | 热re99久久精品国产66热 | 欧美黄在线 | 91精品视频一区二区三区 | 日韩在线二区 | 国产精品久久久久久久久久白浆 | 久久久久久高潮国产精品视 | 亚洲国产精品人久久电影 | 久草视频在线免费看 | 日韩欧美精品免费 | 午夜国产福利在线 | 国产精品99久久久久的智能播放 | 中文字幕在线看 | 婷婷丁香激情网 | 五月亚洲婷婷 | 97视频在线 | 黄色毛片在线观看 | 国产成人一区二区三区免费看 | 亚洲高清在线精品 | 欧美专区国产专区 | 日韩在线观看 | 久久无码av一区二区三区电影网 | 国产性天天综合网 | 97成人在线 | 91av成人 | 九九精品视频在线 | 69国产精品成人在线播放 | 97福利 | 欧美人牲| av成人动漫在线观看 | 高清av免费一区中文字幕 | 亚洲性少妇性猛交wwww乱大交 | 色妞色视频一区二区三区四区 | 99中文字幕 | 麻豆精品视频在线观看免费 | 亚洲成人高清在线 | 免费成人在线观看 | 国产91精品在线播放 | 国产一线二线三线在线观看 | 亚洲成av人片在线观看 | 久草在线国产 | 国内久久看 | 国产精品久久一区二区三区, | 国产精品久久久区三区天天噜 | 亚洲午夜电影网 | 18国产精品福利片久久婷 | 一区二区三区国产精品 | 五月婷婷欧美视频 | 欧美精品久久久久久久久久久 | 狠狠干夜夜爽 | 国产精品免费一区二区三区在线观看 | 亚洲精品国产成人av在线 | 国产一级特黄电影 | 午夜视频免费播放 | 亚洲成人黄色在线观看 | www黄色软件| 一区二区影院 | 婷婷精品在线视频 | 天天爱天天操天天射 | 免费亚洲片 | 欧美日韩精品二区第二页 | 五月开心综合 | 免费的国产精品 | www.69xx| 久在线观看视频 | 国产精品男女视频 | 亚洲一级片在线观看 | 免费视频黄 | av免费线看| 综合网天天色 | a极黄色片 | 精品久久久久国产免费第一页 | 福利电影一区二区 | 成人一级电影在线观看 | 国产在线精品福利 | 日本黄色免费电影网站 | 怡红院久久 | 国产中文 | 成人h视频在线播放 | 99精品免费久久久久久久久 | 91精品国产乱码久久桃 | 激情av在线播放 | 国产精品视频大全 | 欧美中文字幕第一页 | 国产一区二区在线观看免费 | 日韩大片在线播放 | 国产艹b视频 | 精品亚洲男同gayvideo网站 | 国产免费成人 | 欧美性生活大片 | 日韩美女一级片 | 久久免费视频1 | 国产 在线观看 | av在线网站免费观看 | 国产在线国产 | 久久国内精品视频 | 成人毛片网 | 欧美大片mv免费 | 在线v片| 日韩激情视频在线观看 | 国产97在线视频 | 怡红院av久久久久久久 | 国产在线高清视频 | 天天曰夜夜操 | 亚洲国产成人精品在线观看 | 制服丝袜亚洲 | 免费观看一级特黄欧美大片 | 亚洲天堂社区 | 中文字幕在线日亚洲9 | 在线观看视频黄色 | 国产成人99av超碰超爽 | 精品夜夜嗨av一区二区三区 | 亚洲精品mv在线观看 | 国产中文伊人 | 97视频免费观看2区 亚洲视屏 | 国产一二三四在线观看视频 | 午夜成人免费电影 | 成 人 黄 色 视频免费播放 | 99精品毛片 | 欧美日韩观看 | 久草剧场 | 在线中文字幕一区二区 | 色综合久久久久综合体 | 啪啪激情网 | 久久黄网站 | 国产第一页福利影院 | 国产成人久 | 精品国产伦一区二区三区免费 | 久久99热精品 | 二区在线播放 | 99精品国产兔费观看久久99 | 欧美一性一交一乱 | 欧美日韩二区三区 | 国产精品免费看 | 97精品国产97久久久久久免费 | 久久久精华网 | 亚洲激精日韩激精欧美精品 | 涩涩网站在线播放 | 狠狠的干狠狠的操 | 日本久久视频 | 久久国产精品一二三区 | www.夜夜操| 视频国产在线 | 精品在线一区二区三区 | 久草在线免费资源站 | 91成人网在线观看 | 国产精品女人久久久 | 久久久高清视频 | 一区二区三区中文字幕在线观看 | 九九九视频精品 | 国产理论一区二区三区 | 91看片淫黄大片一级在线观看 | 在线播放精品一区二区三区 | 5月丁香婷婷综合 | 国产高清在线观看av | 九九热.com| 色久网 | 91精品婷婷国产综合久久蝌蚪 | 三级av在线免费观看 | 国产亚洲情侣一区二区无 | 9在线观看免费高清完整版在线观看明 | 国产超碰在线观看 | 亚洲欧洲xxxx | 手机看片99 | 欧美福利视频一区 | 久久精品国产v日韩v亚洲 | 五月婷婷久久丁香 | 激情综合啪| 色视频在线 | 91精品免费在线 | 激情小说网站亚洲综合网 | 国产日韩在线一区 | japanesexxxxfreehd乱熟 | 婷婷激情站 | 成人av影视在线 | 缴情综合网五月天 | 久久精品欧美视频 | 最近日本字幕mv免费观看在线 | 色综合综合 | 狠狠狠狠狠狠狠狠 | 久久精品精品电影网 | 久久成人国产精品入口 | 久久亚洲欧美 | 亚洲色视频| 三级黄色在线观看 | 久久99最新地址 | 国内精品久久久久久中文字幕 | 亚洲视频久久久 | 国产精品人成电影在线观看 | 日韩有码第一页 | 国产精品成人免费 | 中文字幕色网站 | 久久免费公开视频 | 最近中文字幕久久 | 在线看黄网站 | 久久久国产精品免费 | 久久综合久久综合久久 | 91在线免费播放 | 欧美性色xo影院 | 91日韩在线 | 91秒拍国产福利一区 | 日韩一级黄色片 | 成人av在线观 | 久久久久久激情 | 成人午夜av电影 | av线上看 | 97人人澡人人添人人爽超碰 | www.国产在线视频 | 欧美精品免费在线观看 | 人人看人人草 | 国产流白浆高潮在线观看 | 久草在线播放视频 | 91在线文字幕 | 久久精品99国产国产 | 亚洲女人av | 国产精品成人一区二区三区吃奶 | 亚洲成人软件 | 日韩艹| 国产字幕在线看 | 97视频在线观看成人 | 伊人手机在线 | 日韩视频中文字幕在线观看 | 久久久99精品免费观看 | 免费在线观看av片 | 国产99久久久精品 | 久二影院 | 免费男女羞羞的视频网站中文字幕 | 麻豆视频大全 | 精品主播网红福利资源观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 精品嫩模福利一区二区蜜臀 | 在线岛国av | 麻豆手机在线 | 日韩在线免费观看视频 | bbbbb女女女女女bbbbb国产 | 日本性xxxxx 亚洲精品午夜久久久 | 欧美巨大荫蒂茸毛毛人妖 | 国产精品一区二区三区在线 | 亚洲国产精品推荐 | 黄色h在线观看 | 日韩高清一区 | 亚洲情感电影大片 | 国产又粗又猛又色又黄网站 | 久草手机视频 | 久久美女免费视频 | 日日色综合| 狠狠操狠狠干天天操 | 国产成人精品久久久久蜜臀 | 久久av在线播放 | 中文资源在线官网 | 国产精品视频线看 | 97在线播放视频 | 97视频在线观看免费 | 亚洲午夜精品福利 | 成人毛片在线观看 | 一区二区不卡视频在线观看 | 久久免费成人 | 天天色 天天 | 国产中文字幕国产 | av成人在线观看 | 五月婷婷深开心 | 国产一级视频在线观看 | 激情五月婷婷激情 | 国产精品久久99综合免费观看尤物 | 一区二区亚洲精品 | 国产麻豆精品一区二区 | 一级a性色生活片久久毛片波多野 | 中文字幕国产一区二区 | 激情综合色综合久久综合 | av动图 | 97理论片| 亚洲成人动漫在线观看 | 热久久免费视频精品 | 成 人 黄 色视频免费播放 |