Kinect影象 骨骼點夾角處理
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Kinect;
using System.Windows.Forms;
namespace WpfApplication1
{
///
/// MainWindow.xaml 的互動邏輯
///
public partial class MainWindow : Window
{
Cl c = new Cl();
public MainWindow()
{
InitializeComponent();
}
//感測器裝置
KinectSensor _sensor;
//資源讀取
MultiSourceFrameReader _reader;
//骨骼點集合
IList _bodies;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//獲取預設裝置
_sensor = KinectSensor.GetDefault();
if (_sensor != null)
{
_sensor.Open();
//開啟一個新的流讀取器
_reader = _sensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color | FrameSourceTypes.Depth | FrameSourceTypes.Infrared | FrameSourceTypes.Body);
//幀變化事件
_reader.MultiSourceFrameArrived += _reader_MultiSourceFrameArrived;
}
}
void _reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
//throw new NotImplementedException();
//從框架參考集中獲取框架
var reference = e.FrameReference.AcquireFrame();
//從該資源的顏色框架中獲取資源
using (var frame = reference.ColorFrameReference.AcquireFrame())
{
if (frame != null)
{
img.Source = frame.ToBitmap();
}
}
//從該資源的骨骼框架中獲取資源
using (var frame = reference.BodyFrameReference.AcquireFrame())
{
if (frame != null)
{
//建立一個骨骼點集合
_bodies = new Body[frame.BodyFrameSource.BodyCount];
//獲取更新的主體資料的列表。***********************************
frame.GetAndRefreshBodyData(_bodies);
foreach (var body in _bodies)
{
//判斷是否被跟蹤
if (body.IsTracked == true)
{
// 獲取左手骨骼點 point資訊
Joint leftHand = body.Joints[JointType.HandLeft];
//獲取左肩骨骼點 point資訊
Joint leftShoulder = body.Joints[JointType.ShoulderLeft];
//判斷檢測狀態
if (leftHand.TrackingState == TrackingState.Tracked)
{
//算夾角 以中心法線為標準
double a = c.deg(leftHand, leftShoulder);
leftPx.Text = a.ToString();
if (a < 90)
{
//模擬按鍵A
System.Windows.Forms.SendKeys.SendWait("{A}");
}
}
}
}
}
}
}
}
}
相關文章
- iOS 影象處理 - 影象拼接iOS
- Python-OpenCV 處理影象(三):影象畫素點操作PythonOpenCV
- 影象處理之影象增強
- UIImage 影象處理UI
- Bayer影象處理
- Python-OpenCV 處理影象(七):影象灰度化處理PythonOpenCV
- Python-OpenCV 處理影象(八):影象二值化處理PythonOpenCV
- 前端影象處理指南前端
- c#影象處理C#
- 數字影象處理DIP
- 柵格影象的處理
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- MATLAB數字影象處理(二)影象增強Matlab
- C++影象處理 -- 影象黑白調整應用C++
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- 影象中的畫素處理
- python PIL 影象處理操作Python
- 第十四章 處理影象
- GPU 加速下的影象處理GPU
- Kinect開發學習筆記之(七)骨骼資料的提取筆記
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- arcgis api for flex三個點求夾角APIFlex
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI
- 數字影象處理目錄列表
- 6 款 Javascript 的影象處理庫JavaScript
- 使用 canvas 對影象進行處理Canvas
- 神奇的影象處理演算法演算法
- [Python影象處理] 五.影象融合、加法運算及影象型別轉換Python型別
- Python-OpenCV 處理影象(二):濾鏡和影象運算PythonOpenCV
- 影象處理的濾鏡演算法演算法
- Linux 上的科學影象處理Linux
- matlab影象處理常用命令Matlab
- Python影象處理庫Pillow入門Python
- 影象處理 二維小波變換
- Javascript影象處理之虛擬邊緣JavaScript