Ejemplo n.º 1
0
        public bool Start(int DeviceNo)
        {
            try {
                FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
                MonikerString = videoDevices[DeviceNo].MonikerString;
                _videoSource  = new VideoCaptureDevice(MonikerString);
                VideoSource   = new MyAsyncVideoSource(_videoSource, true);
                //SetMaxResolution();
                VideoSource.NewFrame += NewFrame;
                VideoSource.Start();
                FrameNumber = 0;

                // measure range
                int min, max, step, def;
                CameraControlFlags ccflags;
                VideoProcAmpFlags  vpflags;
                _videoSource.GetCameraPropertyRange(CameraControlProperty.Exposure, out min, out max, out step, out def, out ccflags);
                ExposureRange = String.Format("{0} to {1})", min, max, step);
                _videoSource.GetVideoPropertyRange(VideoProcAmpProperty.Brightness, out min, out max, out step, out def, out vpflags);
                BrightnessRange = String.Format("{0} to {1})", min, max, step);

                timer.Elapsed += delegate {
                    FPSReceived  = VideoSource.FramesReceived;
                    FPSProcessed = VideoSource.FramesProcessed;
                };
                timer.Start();

                return(VideoSource.IsRunning);
            } catch {
                return(false);
            }
        }
Ejemplo n.º 2
0
        private static CameraProperty ReadProperty(VideoCaptureDevice device, VideoProcAmpProperty property)
        {
            CameraProperty p = new CameraProperty();

            p.Identifier     = property.ToString();
            p.Specific       = "VideoProcAmp";
            p.ReadOnly       = false;
            p.Type           = CameraPropertyType.Integer;
            p.Representation = CameraPropertyRepresentation.LinearSlider;
            p.CanBeAutomatic = true;

            try
            {
                int min;
                int max;
                int step;
                int defaultValue;
                VideoProcAmpFlags flags;
                bool success = device.GetVideoPropertyRange(property, out min, out max, out step, out defaultValue, out flags);

                if (!success)
                {
                    p.Supported = false;
                }
                else
                {
                    p.Supported = true;
                    p.Minimum   = min.ToString(CultureInfo.InvariantCulture);
                    p.Maximum   = max.ToString(CultureInfo.InvariantCulture);

                    int currentValue;
                    success = device.GetVideoProperty(property, out currentValue, out flags);

                    if (!success)
                    {
                        p.Supported = false;
                    }
                    else
                    {
                        p.CurrentValue = currentValue.ToString(CultureInfo.InvariantCulture);
                        p.Automatic    = flags == VideoProcAmpFlags.Auto;
                    }
                }
            }
            catch
            {
                p.Supported = false;
            }

            return(p);
        }