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(); }
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); }