用Aforge调用了摄像头,但一直没有找到设置摄像头亮度、对比度、灰度等方法,查阅资料发现,原来就这么简单:
VideoCaptureDevice Cam1;
FilterInfoCollection VideoCaptureDevices;
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
Cam1 = new VideoCaptureDevice(VideoCaptureDevices[0].MonikerString);
Cam1.DisplayPropertyPage(IntPtr.Zero); //这将显示带有摄像头控件的窗体
这个调节摄像头得控件,功能很多。
如图:
当然,你可以选择不使用DisplayPropertyPage(),直接访问摄像头:
FilterInfoCollection videoDevices =
new FilterInfoCollection(FilterCategory.VideoInputDevice);
VideoCaptureDevice videoDevice =
new VideoCaptureDevice(videoDevices[camDevice].MonikerString);
videoDevice.SetCameraProperty(
CameraControlProperty.Zoom,
zoomValue,
CameraControlFlags.Manual);
videoDevice.SetCameraProperty(
CameraControlProperty.Focus,
focusValue,
CameraControlFlags.Manual);
videoDevice.SetCameraProperty(
CameraControlProperty.Exposure,
exposureValue,
CameraControlFlags.Manual);
要访问其他相机属性,如亮度,对比度,请参阅 IAMVideoProcAmp实现
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Brightness,
brightnessValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Contrast,
contrastValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Saturation,
saturationValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Sharpness,
sharpnessValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.WhiteBalance,
whiteBalanceValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.BacklightCompensation,
backlightCompensationValue,
VideoProcAmpFlags.Manual);