void IAMMove(VideoCaptureDevice d, CameraControlProperty p, int i) { int v, minv, maxv, stepSize, defVal; CameraControlFlags f, cf; d.GetCameraProperty(p, out v, out f); d.GetCameraPropertyRange(p, out minv, out maxv, out stepSize, out defVal, out cf); int newv = v + i*stepSize; if (newv<minv) newv = minv; if (newv>maxv) newv = maxv; if (i == 0) newv = defVal; if (cf== CameraControlFlags.Manual) { d.SetCameraProperty(p, newv, CameraControlFlags.Manual); } else { MainForm.LogMessageToFile("Camera control flags are not manual"); } }
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; } }