void Start() { Debug.Log ("Start(): Initializing nodes."); this.context = new Context (SAMPLE_XML_FILE); this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator; if (this.depth == null) { Debug.LogError ("Viewer must have a depth node!"); } this.hands = context.FindExistingNode (NodeType.Hands) as HandsGenerator; if (this.hands == null) { Debug.LogError ("Viewer must have a hands node!"); } this.gestures = context.FindExistingNode (NodeType.Gesture) as GestureGenerator; if (this.gestures == null) { Debug.LogError ("Viewer must have a gestures node!"); } this.hands.HandCreate += new HandsGenerator.HandCreateHandler (hands_HandCreate); this.hands.HandUpdate += new HandsGenerator.HandUpdateHandler (hands_HandUpdate); this.hands.HandDestroy += new HandsGenerator.HandDestroyHandler (hands_HandDestroy); this.gestures.AddGesture ("Wave"); this.gestures.AddGesture ("RaiseHand"); this.gestures.GestureRecognized += new GestureGenerator.GestureRecognizedHandler (gestures_GestureRecognized); this.gestures.StartGenerating (); }
void Initialize() { this.context = new Context("SamplesConfig.xml"); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception("Viewer must have a depth node!"); } this.userGenerator = new UserGenerator(this.context); this.skeletonCapbility = new SkeletonCapability(this.userGenerator); this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator); this.calibPose = this.skeletonCapbility.GetCalibrationPose(); this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd); this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All); this.userGenerator.StartGenerating(); App.ViewModel.Status = "Waiting to acquire user"; this.ShouldRun = true; this.readerThread = new Thread(ReaderThread); this.readerThread.Start(); }
public static bool IsConnected() { bool isConnected = false; try { // string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); var dir = GTPath.GetLocalApplicationDataPath(); DirectoryInfo dirInfo = new DirectoryInfo(new Uri(dir).LocalPath); Context ctx = new Context(dirInfo.FullName + "\\" + configFile); ProductionNode irNode = ctx.FindExistingNode(NodeType.IR) as IRGenerator; if (irNode != null) isConnected = true; irNode.Dispose(); ctx.Dispose(); } catch (Exception ex) { isConnected = false; } return isConnected; }
public StreamView() { InitializeComponent(); pictureBoxOverlay.BackColor = Color.Transparent; try { this.context = new Context(@".\Data\openniconfig.xml"); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception(@"Error in Data\openniconfig.xml. No depth node found."); } this.histogram = new int[this.depth.GetDeviceMaxDepth()]; MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb); } catch (Exception ex) { /// /// - todo: proper error logging here /// MessageBox.Show("Error initializing OpenNI."); MessageBox.Show(ex.Message); this.Close(); } }
public MainWindow() { InitializeComponent(); this.context = new Context(SAMPLE_XML_FILE); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception("Viewer must have a depth node!"); } this.userGenerator = new UserGenerator(this.context); this.skeletonCapbility = new SkeletonCapability(this.userGenerator); this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator); this.calibPose = this.skeletonCapbility.GetCalibrationPose(); this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd); this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All); this.joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>>(); this.userGenerator.StartGenerating(); this.histogram = new int[this.depth.GetDeviceMaxDepth()]; MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/); this.shouldRun = true; this.readerThread = new Thread(ReaderThread); this.readerThread.Start(); }
static void Run() { string SAMPLE_XML_FILE = @"../../../../Data/SamplesConfig.xml"; Context context = new Context(SAMPLE_XML_FILE); DepthGenerator depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (depth == null) { Console.WriteLine("Sample must have a depth generator!"); return; } MapOutputMode mapMode = depth.GetMapOutputMode(); DepthMetaData depthMD = new DepthMetaData(); Console.WriteLine("Press any key to stop..."); while (!Console.KeyAvailable) { context.WaitOneUpdateAll(depth); depth.GetMetaData(depthMD); Console.WriteLine("Frame {0} Middle point is: {1}.", depthMD.FrameID, depthMD[(int)mapMode.nXRes/2, (int)mapMode.nYRes/2]); } }
public void Start() { this.context = new Context (SAMPLE_XML_FILE); this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception ("Viewer must have a depth node!"); } this.depthMD = new DepthMetaData (); this.histogram = new int[this.depth.GetDeviceMaxDepth ()]; }
void Start() { rgbTexture = new Texture2D (640, 480, TextureFormat.RGB24, false); rgbMaterial.mainTextureScale = new Vector2 (0.62f, 0.93f); // fixes weird scaling problem rgbMaterial.mainTexture = rgbTexture; context = new Context (XML_FILE); depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator; if (depth == null) { Debug.LogError ("Viewer must have a depth node!"); return; } imageGenerator = context.FindExistingNode (NodeType.Image) as ImageGenerator; if (imageGenerator == null) { Debug.LogError ("Viewer must have an image generator!"); return; } depth.GetAlternativeViewPointCap ().SetViewPoint (imageGenerator); imageGenerator.StartGenerating (); }
public Form1() { InitializeComponent(); this.context = new Context(SAMPLE_XML_FILE); this.image = context.FindExistingNode(NodeType.Image) as ImageGenerator; if (this.image == null) { throw new Exception("Viewer must have an image node!"); } var mapMode = this.image.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb); this.shouldRun = true; this.readerThread = new Thread(ReaderThread); this.readerThread.Start(); }
public MainWindow() { InitializeComponent(); this.context = new Context(SAMPLE_XML_FILE); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception("Viewer must have a depth node!"); } this.histogram = new int[this.depth.GetDeviceMaxDepth()]; MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb); this.shouldRun = true; this.readerThread = new Thread(ReaderThread); this.readerThread.Start(); }
/// <summary> /// OpenNIスレッドの起動 /// /// </summary> private void StartOpenNI() { try { context = new Context(Application.StartupPath + Settings.OPENNI_CONFIG); } catch(GeneralException ge){ Console.WriteLine(ge.Message); this.Close(); return; } depthGenerator = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depthGenerator == null) { throw new Exception("Viewer must have a depth node!"); } userGenerator = new UserGenerator(context); userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); userGenerator.StartGenerating(); imageGenerator = context.FindExistingNode(NodeType.Image) as ImageGenerator; imageGenerator.StartGenerating(); poseDetectionCapability = new PoseDetectionCapability(userGenerator); poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); skeletonCapability = new SkeletonCapability(userGenerator); skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapability_CalibrationEnd); skeletonCapability.SetSkeletonProfile(SkeletonProfile.All); depthGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator); histogram = new int[depthGenerator.GetDeviceMaxDepth()]; // 出力モード //this.mapMode = depthGenerator.GetMapOutputMode(); this.mapMode = imageGenerator.GetMapOutputMode(); bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/); shouldRun = true; openNiThread = new Thread(ReaderThread); openNiThread.Start(); }
void Start() { context = new Context(XML_FILE); depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (depth == null) { Debug.LogError("Viewer must have a depth node!"); return; } imageGenerator = context.FindExistingNode(NodeType.Image) as ImageGenerator; if (imageGenerator == null) { Debug.LogError("Viewer must have an image generator!"); return; } userGenerator = new UserGenerator(context); skeletonCapability = new SkeletonCapability(userGenerator); poseDetectionCapability = new PoseDetectionCapability(userGenerator); calibPose = skeletonCapability.GetCalibrationPose(); userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapability_CalibrationEnd); skeletonCapability.SetSkeletonProfile(SkeletonProfile.All); userGenerator.StartGenerating(); MapOutputMode mapMode = depth.GetMapOutputMode(); GameObject o = new GameObject("User"); mainUser = o.transform; mainUser.position = new Vector3(0,0,0); mainUser.parent = transform; GameObject obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject; center = obj.transform; //center.parent = mainUser; obj.name = "Center"; createDefaultLineRenderer(center); obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject; leftArm = obj.transform; //leftArm.parent = mainUser; obj.name = "L Arm"; createDefaultLineRenderer(leftArm); obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject; rightArm = obj.transform; //rightArm.parent = mainUser; obj.name = "R Arm"; createDefaultLineRenderer(rightArm); obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject; leftLeg = obj.transform; //leftLeg.parent = mainUser; obj.name = "L Leg"; createDefaultLineRenderer(leftLeg); obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject; rightLeg = obj.transform; //rightLeg.parent = mainUser; obj.name = "R Leg"; createDefaultLineRenderer(rightLeg); }
public void initKinect() { kinectStarted = true; FMessage[0] = "Init OpenNI Node"; this.context = new Context(SAMPLE_XML_FILE); this.depth = context.FindExistingNode(xn.NodeType.Depth) as DepthGenerator; if (this.depth == null) { //throw new Exception("Viewer must have a depth node!"); FLogger.Log(LogType.Debug, "non ci siamo eh"); } else { FLogger.Log(LogType.Debug, "Ecchime sono un Primesense attivato e running....:P"); } this.userGenerator = new UserGenerator(this.context); this.skeletonCapbility = new SkeletonCapability(this.userGenerator); this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator); this.calibPose = this.skeletonCapbility.GetCalibrationPose(); this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd); this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All); this.joints = new Dictionary<uint, Dictionary<SkeletonJoint, SkeletonJointPosition>>(); this.userGenerator.StartGenerating(); FMessage[0] = "OpenNI Node registered"; this.histogram = new int[this.depth.GetDeviceMaxDepth()]; MapOutputMode mapMode = this.depth.GetMapOutputMode(); texW = (int)mapMode.nXRes; texH = (int)mapMode.nYRes; FLogger.Log(LogType.Debug, "Winit: " + texW + "Hinit: " + texH); FLogger.Log(LogType.Debug, "kinectStarted = " + kinectStarted); this.bitmap = new System.Drawing.Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format32bppArgb); this.shouldRun = true; this.readerThread = new Thread(ReaderThread); this.readerThread.Start(); FMessage[0] = "OpenNI Thread Started "; }
public override bool Initialize() { // string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); var dir = GTPath.GetLocalApplicationDataPath(); DirectoryInfo dirInfo = new DirectoryInfo(new Uri(dir).LocalPath); this.context = new Context(dirInfo.FullName + Path.DirectorySeparatorChar + configFile); this.ir = context.FindExistingNode(NodeType.IR) as IRGenerator; if (this.ir != null) return true; else return false; }
public void Run() { this.context = new Context (SAMPLE_XML_FILE); var ges = context.FindExistingNode (NodeType.Gesture) as GestureGenerator; if (ges == null) throw new Exception ("Viewer must have a gesture node!"); //foreach (var ggs in ges.EnumerateAllGestures ()) Console.Error.WriteLine (ggs); return; this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator; if (this.depth == null) throw new Exception ("Viewer must have a depth node!"); user_gen = new UserGenerator (context); skel_cap = new SkeletonCapability (user_gen); pose_cap = new PoseDetectionCapability (user_gen); calib_pose = skel_cap.GetCalibrationPose (); user_gen.NewUser += delegate (ProductionNode node, uint id) { if (user_count++ > 0) Console.Error.WriteLine ("WARNING: this application does not recognize more than 1 person"); else pose_cap.StartPoseDetection (calib_pose, id); }; user_gen.LostUser += delegate (ProductionNode node, uint id) { user_count--; joints.Remove (id); }; pose_cap.PoseDetected += delegate (ProductionNode node, string pose, uint id) { pose_cap.StopPoseDetection (id); skel_cap.RequestCalibration (id, true); }; skel_cap.CalibrationEnd += delegate (ProductionNode node, uint id, bool success) { if (success) { skel_cap.StartTracking (id); joints.Add (id, new Dictionary<SkeletonJoint, SkeletonJointPosition>()); } else { pose_cap.StartPoseDetection (calib_pose, id); } }; skel_cap.SetSkeletonProfile (SkeletonProfile.All); joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>> (); user_gen.StartGenerating (); histogram = new int [this.depth.GetDeviceMaxDepth ()]; MapOutputMode mapMode = this.depth.GetMapOutputMode (); tcp_client = new TcpClient (); tcp_client.Connect ("localhost", 9801); tcp_writer = new StreamWriter (tcp_client.GetStream ()); // bitmap = new Bitmap ((int) mapMode.nXRes, (int) mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/); should_run = true; readerThread = new Thread (ReaderThread); readerThread.Start (); shouldPrintState = false; Console.WriteLine ("Type [CR] to stop"); Console.ReadLine (); should_run = false; }
/// <summary> /// This method gets executed when the window loads. In it, we initialize our connection with Kinect /// and set up the timer which will update our depth image. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Window_Loaded(object sender, RoutedEventArgs e) { try { // Initialize the context from the configuration file this.context = new Context(@"..\..\data\openniconfig.xml"); // Get the depth generator from the config file. this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) throw new Exception(@"Error in Data\openniconfig.xml. No depth node found."); MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb); // Initialize Matrixes this.depthMatrix = new Matrix<Double>(480, 640); this.depthMatrixROI = new Matrix<Double>(480, 640); this.depthMatrixROIByte = new Matrix<Byte>(480, 640); this.backgroundDepthMatrix = new Matrix<Double>(480, 640); // Initialize Images this.depthMatrixImage = new Image<Gray,double>(640,480); this.depthMatrixROIImage = new Image<Gray, byte>(640, 480); this.backgroundDepthImage = new Image<Gray, double>(640, 480); this.trackingImage = new Image<Bgr, byte>(640, 480, new Bgr(0, 0, 0)); // Initialize Blob Tracking Components // Blob Tracking Parameter blobParam = new Emgu.CV.VideoSurveillance.BlobTrackerAutoParam<Gray>(); blobParam.BlobTracker = new Emgu.CV.VideoSurveillance.BlobTracker(Emgu.CV.CvEnum.BLOBTRACKER_TYPE.CC); blobParam.BlobDetector = new Emgu.CV.VideoSurveillance.BlobDetector(Emgu.CV.CvEnum.BLOB_DETECTOR_TYPE.CC); //blobParam.FGDetector = new Emgu.CV.VideoSurveillance.FGDetector<Gray>(Emgu.CV.CvEnum.FORGROUND_DETECTOR_TYPE.FGD); //blobParam.FGTrainFrames = 10; // Blob Tracking initialization blobTracker = new Emgu.CV.VideoSurveillance.BlobTrackerAuto<Gray>(blobParam); progressBar1.Minimum = 0; progressBar1.Maximum = ((Convert.ToInt16(textBoxLifespan.Text) * 4) / _tickDuration); } catch (Exception ex) { MessageBox.Show("Error initializing OpenNI."); MessageBox.Show(ex.Message); this.Close(); } // Set the timer to update teh depth image every 10 ms. DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, _tickDuration); dispatcherTimer.Start(); Console.WriteLine("Finished loading"); }
void Start() { /*really unity? do you do that for real? */ InitializeCharacter(); this.context = new Context(SAMPLE_XML_FILE); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception("Viewer must have a depth node!"); } this.userGenerator = new UserGenerator(this.context); this.skeletonCapbility = new SkeletonCapability(this.userGenerator); this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator); this.calibPose = this.skeletonCapbility.GetCalibrationPose(); this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd); this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All); this.joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>>(); this.userGenerator.StartGenerating(); this.histogram = new int[this.depth.GetDeviceMaxDepth()]; MapOutputMode mapMode = this.depth.GetMapOutputMode(); // this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/); usersLblTex = new Texture2D((int)mapMode.nXRes, (int)mapMode.nYRes); Debug.Log("usersLblTex = w: "+ usersLblTex.width + " h: " + usersLblTex.height ); usersMapSize = mapMode.nXRes * mapMode.nYRes; usersMapColors = new Color[usersMapSize]; usersMapRect = new Rect(Screen.width - usersLblTex.width / 2, Screen.height - usersLblTex.height / 2, usersLblTex.width / 2, usersLblTex.height / 2); usersLabelMap = new short[usersMapSize]; usersDepthMap = new short[usersMapSize]; usersHistogramMap = new float[5000]; //DepthMetaData depthMD = new DepthMetaData(); this.shouldRun = true; //this.readerThread = new Thread(ReaderThread); // this.readerThread.Start(); }
private void InitOpenNi(AsyncStateData asyncData) { _niContext = new Context("openni.xml"); _imageNode = (ImageGenerator)_niContext.FindExistingNode(NodeType.Image); _imageMeta = new ImageMetaData(); _imageNode.GetMetaData(_imageMeta); // create the image bitmap source on asyncData.AsyncOperation.SynchronizationContext.Send( md => CreateImageBitmap(_imageMeta, out _rgbImageSource), null); // add depth node _depthNode = (DepthGenerator)_niContext.FindExistingNode(NodeType.Depth); _depthMeta = new DepthMetaData(); _depthNode.GetMetaData(_depthMeta); asyncData.AsyncOperation.SynchronizationContext.Send( state => CreateImageBitmap(_depthMeta, out _depthImageSource, PixelFormats.Pbgra32), null); // add scene node //_sceneNode = (SceneAnalyzer) _niContext.FindExistingNode(NodeType.Scene); //_sceneMeta = new SceneMetaData(); ////_sceneNode.GetMetaData(_sceneMeta); //asyncData.AsyncOperation.SynchronizationContext.Send( // state => CreateImageBitmap(_sceneMeta, out _sceneImageSource, PixelFormats.Pbgra32), // null); }
/// <summary> /// This method gets executed when the window loads. In it, we initialize our connection with Kinect /// and set up the timer which will update our depth image. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Window_Loaded(object sender, RoutedEventArgs e) { try { // Initialize the context from the configuration file this.context = new Context(@"..\..\data\openniconfig.xml"); // Get the depth generator from the config file. this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) throw new Exception(@"Error in Data\openniconfig.xml. No depth node found."); MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb); } catch (Exception ex) { MessageBox.Show("Error initializing OpenNI."); MessageBox.Show(ex.Message); this.Close(); } // Set the timer to update teh depth image every 10 ms. DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 10); dispatcherTimer.Start(); Console.WriteLine("Finished loading"); }
void Start() { this.context = new Context(SAMPLE_XML_FILE); this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; if (this.depth == null) { throw new Exception("Viewer must have a depth node!"); } this.userGenerator = new UserGenerator(this.context); this.skeletonCapbility = new SkeletonCapability(this.userGenerator); this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator); this.calibPose = this.skeletonCapbility.GetCalibrationPose(); this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser); this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser); this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected); this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd); this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All); this.userGenerator.StartGenerating(); MapOutputMode mapMode = this.depth.GetMapOutputMode(); this.shouldRun = true; }
public void Initialize() { context = new Context(@"..\..\..\data\openniconfig.xml"); depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator; rgb = context.FindExistingNode(NodeType.Image) as ImageGenerator; if (depth == null) throw new Exception(@"Error in Data\openniconfig.xml. No depth node found."); if (rgb == null) throw new Exception(@"Error in Data\openniconfig.xml. No rgb node found."); MapOutputMode mapMode = depth.GetMapOutputMode(); // Initialize member variables depthHistogram = new int[depth.GetDeviceMaxDepth()]; // initialize rgb array xn.ImageMetaData rgbMD = rgb.GetMetaData(); rgbData = new byte[rgbMD.XRes * rgbMD.YRes * 3]; rgbWidth = rgbMD.XRes; rgbHeight = rgbMD.YRes; xn.DepthMetaData depthMD = depth.GetMetaData(); depthData = new ushort[depthMD.XRes * depthMD.YRes]; oldDepthData = new ushort[depthMD.XRes * depthMD.YRes]; histogramImage = new byte[depthMD.XRes * depthMD.YRes * 3]; depthWidth = depthMD.XRes; depthHeight = depthMD.YRes; depthOffsetX = depthMD.XOffset; depthOffsetY = depthMD.YOffset; DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 30); dispatcherTimer.Start(); }
void Start() { texture = new Texture2D (640, 480, TextureFormat.RGB24, false); rgbMaterial.mainTextureScale = new Vector2 (0.62f, 0.93f); // fixes weird scaling problem rgbMaterial.mainTexture = texture; context = new Context (XML_FILE); depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator; if (depth == null) { Debug.LogError ("Viewer must have a depth node!"); return; } imageGenerator = context.FindExistingNode (NodeType.Image) as ImageGenerator; if (imageGenerator == null) { Debug.LogError ("Viewer must have an image generator!"); return; } depth.GetAlternativeViewPointCap ().SetViewPoint (imageGenerator); //handsGenerator = context.FindExistingNode(NodeType.Hands) as HandsGenerator; //if (handsGenerator == null) { // Debug.LogError("Viewer must have a hands generator!"); // return; //} //handsGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator); //gestureGenerator = context.FindExistingNode (NodeType.Gesture) as GestureGenerator; //if (gestureGenerator == null) { // Debug.LogError ("Viewer must have a gesture node!"); //} //gestureGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator); userGenerator = new UserGenerator (context); skeletonCapability = new SkeletonCapability (userGenerator); poseDetectionCapability = new PoseDetectionCapability (userGenerator); calibPose = skeletonCapability.GetCalibrationPose (); userGenerator.NewUser += new UserGenerator.NewUserHandler (userGenerator_NewUser); userGenerator.LostUser += new UserGenerator.LostUserHandler (userGenerator_LostUser); poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler (poseDetectionCapability_PoseDetected); skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler (skeletonCapability_CalibrationEnd); skeletonCapability.SetSkeletonProfile (SkeletonProfile.All); userGenerator.StartGenerating (); imageGenerator.StartGenerating (); //handsGenerator.HandCreate += new HandsGenerator.HandCreateHandler (hands_HandCreate); //handsGenerator.HandUpdate += new HandsGenerator.HandUpdateHandler (hands_HandUpdate); //handsGenerator.HandDestroy += new HandsGenerator.HandDestroyHandler (hands_HandDestroy); //gestureGenerator.AddGesture ("Wave"); //gestureGenerator.GestureRecognized += new GestureGenerator.GestureRecognizedHandler (gestures_GestureRecognized); //gestureGenerator.StartGenerating(); if (drawSkeleton) { GameObject o = new GameObject ("User"); mainUser = o.transform; mainUser.position = new Vector3 (0, 0, 0); mainUser.parent = transform; GameObject obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject; center = obj.transform; //center.parent = mainUser; obj.name = "Center"; createDefaultLineRenderer (center); obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject; leftArm = obj.transform; //leftArm.parent = mainUser; obj.name = "L Arm"; createDefaultLineRenderer (leftArm); obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject; rightArm = obj.transform; //rightArm.parent = mainUser; obj.name = "R Arm"; createDefaultLineRenderer (rightArm); obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject; leftLeg = obj.transform; //leftLeg.parent = mainUser; obj.name = "L Leg"; createDefaultLineRenderer (leftLeg); obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject; rightLeg = obj.transform; //rightLeg.parent = mainUser; obj.name = "R Leg"; createDefaultLineRenderer (rightLeg); } }