private void InitializePipeline()
        {
            pipeline = Pipeline.Create();
            var webcamConfig = MediaCaptureConfiguration.Default;

            webcamConfig.DeviceId        = WebcamSymbolicLink;
            webcamConfig.Width           = WebcamWidth;
            webcamConfig.Height          = WebcamHeight;
            webcamConfig.Framerate       = 30;
            webcamConfig.UseInSharedMode = true;
            var source = new MediaCapture(pipeline, webcamConfig);
            var flip   = new FlipColorVideo(pipeline)
            {
                FlipHorizontal = FlipX, FlipVertical = FlipY
            };

            source.PipeTo(flip.In, DeliveryPolicy.SynchronousOrThrottle);
            var openface = new OpenFace(pipeline)
            {
                CameraCalibFx = WebcamFx, CameraCalibFy = WebcamFy, CameraCalibCx = WebcamCx, CameraCalibCy = WebcamCy
            };

            flip.PipeTo(openface.In, DeliveryPolicy.SynchronousOrThrottle);
            generator = new DisplayCoordianteGenerator(pipeline);
            var record = openface.Out.Join(generator.Out, Reproducible.Nearest <Vector2>(), (gp, display) => new GazeToDisplayCoordinateMappingRecord(gp, display), DeliveryPolicy.SynchronousOrThrottle, DeliveryPolicy.SynchronousOrThrottle);

            record.Do((d, e) => {
                AddRecord(d, e);
            }, DeliveryPolicy.SynchronousOrThrottle);
        }
Beispiel #2
0
        private void InitializePipeline()
        {
            pipeline = Pipeline.Create();
            var webcamConfig = MediaCaptureConfiguration.Default;

            webcamConfig.DeviceId        = WebcamSymbolicLink;
            webcamConfig.Width           = WebcamWidth;
            webcamConfig.Height          = WebcamHeight;
            webcamConfig.Framerate       = 30;
            webcamConfig.UseInSharedMode = true;
            var source = new MediaCapture(pipeline, webcamConfig);
            var flip   = new FlipColorVideo(pipeline)
            {
                FlipHorizontal = FlipX, FlipVertical = FlipY
            };

            source.PipeTo(flip.In, DeliveryPolicy.LatestMessage);
            var openface = new OpenFace(pipeline)
            {
                CameraCalibFx = WebcamFx, CameraCalibFy = WebcamFy, CameraCalibCx = WebcamCx, CameraCalibCy = WebcamCy
            };

            flip.PipeTo(openface.In, DeliveryPolicy.LatestMessage);
            var dispFlip = new FlipColorVideo(pipeline)
            {
                FlipHorizontal = !FlipX, FlipVertical = FlipY
            };                                                                                            // mirror display

            source.PipeTo(dispFlip.In, DeliveryPolicy.LatestMessage);
            var joinedVideoFrame = openface.Out.Join(dispFlip.Out, Reproducible.Exact <Shared <Microsoft.Psi.Imaging.Image> >(), (dataPoint, frame) => new Tuple <PoseAndEyeAndFace, Shared <Microsoft.Psi.Imaging.Image> >(dataPoint, frame), DeliveryPolicy.LatestMessage, DeliveryPolicy.LatestMessage);

            joinedVideoFrame.Do(UpdateDisplay, DeliveryPolicy.LatestMessage);
            pipeline.RunAsync();
        }