public KinectFaceTracker(FSDKFacePipeline facePipeline, IKinect kinect, CancellationTokenSource cts)
 {
     _kinect                  = kinect;
     FacePipeline             = facePipeline;
     _cancellationTokenSource = cts;
     _coordinateMapper        = _kinect.CoordinateMapper;
 }
Esempio n. 2
0
 public void RetrieveMesh(CVMesh m)
 {
     LastMesh = m;
     ((IDisposable)fusionizer).Dispose();
     fusionizer = null;
     MeshFinished?.Invoke(this, EventArgs.Empty);
 }
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public MainWindow()
        {
            _iKinect = new Kinect();
            InitializeComponent();
            this._kinect = _iKinect.DiscoverKinectSensor();
            Initialize();

            KinectPoint[,] pic1 = _iKinect.GetColorImage(); // 1st Pic: strange area
            pic1 = _iKinect.GetColorImage(); //2nd Pic: too dark
            pic1 = _iKinect.GetColorImage(); //3rd Pic: not the same brightness as "real" image
            pic1 = _iKinect.GetColorImage(); //4th Pic: okay!

            MessageBox.Show("Please display the playground", "Display Playground", MessageBoxButton.OK,
                            MessageBoxImage.Information);

            KinectPoint[,] pic2 = _iKinect.GetColorImage();

            KinectPoint[,] newPic = _iKinect.GetDifferenceImage(pic2, pic1, 200); //0x64, 0x1E, 0x32

            //newPic = CalculateKMeans(newPic);

            short[] depthPic = _iKinect.GetDepthImage();

            KinectPoint[,] depthAndColorPic = _iKinect.CreateKinectPointArray();

            this._colorImageBitmap.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(newPic, 640, 480), this._colorImageStride, 0);
            this._colorImageBitmap2.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(depthAndColorPic, 640, 480), this._colorImageStride, 0);
            this._colorImageBitmap3.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(pic1, 640, 480), this._colorImageStride,0);
            this._colorImageBitmap4.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(pic2, 640, 480), this._colorImageStride, 0);
            this._rawDepthImage.WritePixels(this._rawDepthImageRect, PrintKinectPointArray(depthAndColorPic, 640, 480), this._rawDepthImageStride,0);
            this._rawDepthImage2.WritePixels(this._rawDepthImageRect, depthPic, this._rawDepthImageStride, 0);
        }
Esempio n. 4
0
 public KinectSequencer()
 {
     kinect = new RealKinect();
     kinect.NewData += new NewDataEventHandler(kinect_NewData);
     stopwatch.Start();
     SequenceAvailable = false;
 }
        public Dictionary<KinectPoint, RealWorldPoint> TransformKinectToRealWorld(IKinect kinect, List<KinectPoint> kinectPoints)
        {
            RealWorldPoint rOrigin = Calibration.Points.Find(x => x.PointType == PointType.Origin).RealWorldPoint;
            RealWorldPoint rXAxisPoint = Calibration.Points.Find(x => x.PointType == PointType.xAxis).RealWorldPoint;
            RealWorldPoint rYAxisPoint = Calibration.Points.Find(x => x.PointType == PointType.yAxis).RealWorldPoint;

            return kinect.CreateRealWorldCoordinates(kinectPoints, rXAxisPoint, rOrigin, rYAxisPoint);
        }
        public Dictionary<BeamerPoint, KinectPoint> CalibrateBeamerToKinect(IBeamerWindow beamerWindow, IKinect kinect)
        {
            RunSimpleStrategy(beamerWindow, kinect);

            CalculateNewPoints();

            return new Dictionary<BeamerPoint, KinectPoint>();
            //TODO Implement
            //throw new NotImplementedException();
        }
Esempio n. 7
0
 Boolean IDevice.Init()
 {
     LoadLogger();
     Log.Info("Starting Kinect automation environment...");
     _kinect   = new KinectData(0);
     _kHandler = new KinectHandler(_kinect, this);
     _kHandler.Init();
     if (_kinect.GetSensor() == null)
     {
         Log.Error("Kinect could not be instantiated. Terminating.");
         return(false);
     }
     return(true);
 }
        public Dictionary<KinectPoint, RealWorldPoint> TransformKinectToRealWorld(IKinect kinect, List<KinectPoint> kinectPoints)
        {
            var rwCornerPoints = kinect.CreateRealWorldCoordinates(kinectPoints);
            foreach (var point in Calibration.Points)
            {
                foreach (var realWorldPoint in rwCornerPoints)
                {
                    if (point.KinectPoint.Equals(realWorldPoint.Key))
                    {
                        point.RealWorldPoint = realWorldPoint.Value;
                    }
                }
            }

            return rwCornerPoints;
        }
        public GestureProcessor(IKinect kinectHandler, KinectData kinect)
        {
            _pointer = new ObjectPointer();
            Log.Debug("objectPointer loaded");
            _pointer.SetObjects(FileLoader.LoadObj("livingRoom.obj", FileLoader.Units.cm));

            Log.Debug("objects loaded");

            _kinectHandler = kinectHandler;
            _kinect = kinect;
            _seqCoords = new ArrayList();

            if (kinect != null) kinect.attachSkeletonHandler(SkeletonDataReadyHandler);

            _dtw = new DtwGestureRecognizer(12, 0.6, 2, 2, 10);
            Skeleton2DDataExtract.Skeleton2DdataCoordReady += NuiSkeleton2DdataCoordReady;
            _pointer.ContextSelected += PointerContextSelected;
        }
        protected Calibration()
        {
            Points = new List<Point>();
            beamerToKinect = new Dictionary<BeamerPoint, KinectPoint>();
            kinectToRealWorld = new Dictionary<KinectPoint, RealWorldPoint>();
            realWorldToArea = new Dictionary<RealWorldPoint, AreaPoint>();
            KinectSpace = new List<BeamerPoint>[640,480];

            try
            {
                beamerWindow = new BeamerWindow();
                kinect = new Kinect.Kinect();
            }
            catch (Exception ex)
            {
                // TODO Exception Handling
            }
        }
        public Dictionary<BeamerPoint, KinectPoint> CalibrateBeamerToKinect(IBeamerWindow beamerWindow, IKinect kinect)
        {
            var beamerToKinect = new Dictionary<BeamerPoint, KinectPoint>();
            var kinectPoints = kinect.CreateKinectPointArray();

            for (var i = 0; i < CALIBRATION_POINTS; i++)
            {
                var beamerPoint = beamerWindow.DisplayCalibrationImageEdge(true, i);
                Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP);
                var picture1 = kinect.GetColorImage();
                Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP);
                beamerWindow.DisplayCalibrationImageEdge(false, i);
                Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP);
                var picture2 = kinect.GetColorImage();

                var diffKinectPoints = kinect.GetDifferenceImage(picture1, picture2, KinectBeamerCalibration.THRESHOLD);

                //TODO Refactoring
                var initPoints = new List<Vector2D>() { new Vector2D { X = 0, Y = 0 } };
                var centroids = KMeans.DoKMeans(KinectPointArrayHelper.ExtractBlackPointsAs2dVector(diffKinectPoints), initPoints);
                var kinectPoint = kinectPoints[(int)centroids[0].X, (int)centroids[0].Y];
                beamerToKinect.Add(beamerPoint, kinectPoint);

                var name = "";
                switch (i + 1)
                {
                    case 1:
                        name = "A";
                        break;
                    case 2:
                        name = "B";
                        break;
                    case 3:
                        name = "C";
                        break;
                    case 4:
                        name = "D";
                        break;
                }

                Calibration.Points.Add(new Point { Name = name, BeamerPoint = beamerPoint, KinectPoint = kinectPoint });
            }
            return beamerToKinect;
        }
        public KinectBeamerOperation()
        {
            CalculateAreaDimensions();
            area = new AreaPoint[areaWidth, areaHeight];

            try
            {
                beamerWindow = new BeamerWindow();
                kinect = new Kinect.Kinect();
            }
            catch (Exception ex)
            {
                // TODO Exception Handling
            }

            beamerWindow.DisplayBlank();
            Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP);
            blankImage = kinect.GetColorImage();

            kinectPoints = kinect.CreateKinectPointArray();
        }
Esempio n. 13
0
        public GestureProcessor(IKinect kinectHandler, KinectData kinect)
        {
            _pointer = new ObjectPointer();
            Log.Debug("objectPointer loaded");
            _pointer.SetObjects(FileLoader.LoadObj("livingRoom.obj", FileLoader.Units.cm));

            Log.Debug("objects loaded");

            _kinectHandler = kinectHandler;
            _kinect        = kinect;
            _seqCoords     = new ArrayList();

            if (kinect != null)
            {
                kinect.attachSkeletonHandler(SkeletonDataReadyHandler);
            }

            _dtw = new DtwGestureRecognizer(12, 0.6, 2, 2, 10);
            Skeleton2DDataExtract.Skeleton2DdataCoordReady += NuiSkeleton2DdataCoordReady;
            _pointer.ContextSelected += PointerContextSelected;
        }
Esempio n. 14
0
 Boolean IDevice.Init()
 {
     LoadLogger();
     Log.Info("Starting Kinect automation environment...");
     _kinect = new KinectData(0);
     _kHandler = new KinectHandler(_kinect, this);
     _kHandler.Init();
     if(_kinect.GetSensor() == null)
     {
         Log.Error("Kinect could not be instantiated. Terminating.");
         return false;
     }
     return true;
 }
        private void RunSimpleStrategy(IBeamerWindow beamerWindow, IKinect kinect)
        {
            var simpleStrategy = new CalibrateEdgePoints();
            simpleStrategy.CalibrateBeamerToKinect(beamerWindow, kinect);

            var edgePoints = Calibration.GetEdgePoints();
            pointA = edgePoints.Find((e) => e.Name == "A");
            pointB = edgePoints.Find((e) => e.Name == "B");
            pointC = edgePoints.Find((e) => e.Name == "C");
            pointD = edgePoints.Find((e) => e.Name == "D");
        }
Esempio n. 16
0
 public KinectWrapper(IKinect kinect)
 {
     _kinect = kinect;
     _kinect.NewData += new NewDataEventHandler(newKinectData);
 }