Пример #1
0
        public CLEyeSource()
        {
            ColorMode  = CLEyeCameraColorMode.CLEYE_COLOR_RAW;
            Resolution = CLEyeCameraResolution.CLEYE_VGA;
            FrameRate  = 60;

            AutoWhiteBalance = true;
            Exposure         = 511;

            source = Observable.Create <IplImage>((observer, cancellationToken) =>
            {
                return(Task.Factory.StartNew(() =>
                {
                    lock (captureLock)
                    {
                        Load();
                        try
                        {
                            while (!cancellationToken.IsCancellationRequested)
                            {
                                if (CLEye.CLEyeCameraGetFrame(camera, image.ImageData, 500))
                                {
                                    if (image.Channels == 4)
                                    {
                                        CV.CvtColor(image, output, ColorConversion.Bgra2Bgr);
                                    }

                                    observer.OnNext(output.Clone());
                                }
                            }
                        }
                        finally { Unload(); }
                    }
                },
                                             cancellationToken,
                                             TaskCreationOptions.LongRunning,
                                             TaskScheduler.Default));
            })
                     .PublishReconnectable()
                     .RefCount();
        }