예제 #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);
            }
        }
예제 #2
0
 public void Close()
 {
     if (VideoSource == null || !VideoSource.IsRunning)
     {
         return;
     }
     timer.Stop();
     VideoSource.SignalToStop();
     VideoSource.WaitForStop();  // problem?
     VideoSource.NewFrame -= NewFrame;
     VideoSource.Stop();
     VideoSource   = null;
     MonikerString = "";
 }
예제 #3
0
 public void Close()
 {
     if (VideoSource == null || !VideoSource.IsRunning) return;
     timer.Stop();
     VideoSource.SignalToStop();
     VideoSource.WaitForStop();  // problem?
     VideoSource.NewFrame -= NewFrame;
     VideoSource.Stop();
     VideoSource = null;
     MonikerString = "";
 }
예제 #4
-1
        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;
            }
        }