Aforge 关于摄像头亮度、对比度等参数设置

用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);
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: AForge是一个在.NET框架上构建的开源计算机视觉和人工智能库。它为开发人员提供了一系列工具和算法,用于图像、视频、多媒体处理和计算机视觉方面的开发。 我们可以利用AForge库来设置摄像头的参数。首先,需要确保已经安装了AForge库,并将其添加到项目中。 接下来,在代码中添加必要的命名空间,例如: using AForge.Video; using AForge.Video.DirectShow; 然后,我们需要实例化一个VideoCaptureDevice类,以访问摄像头。使用以下代码进行实例化: //实例化一个准备使用的摄像头 VideoCaptureDevice videoSource = new VideoCaptureDevice(); 接着,需要获取所有可用的摄像头设备列表,并将其添加到ComboBox中,以便用户选择设备。以下代码段演示了此操作: FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); foreach (FilterInfo device in videoDevices) { comboBox1.Items.Add(device.Name); } 接下来,我们可以选择设备并设置其参数。使用以下代码段,可将选定设备的视频格式、大小和帧率设置为所需的值: if (comboBox1.Items.Count > 0) { videoSource = new VideoCaptureDevice(videoDevices[comboBox1.SelectedIndex].MonikerString); videoSource.VideoResolution = videoSource.VideoCapabilities[0]; videoSource.DesiredFrameRate = 25; } 在这个例子中,我们选择了comboBox1中的设备,并将视频分辨率设置为第一个可用的分辨率,帧率设置为25fps。 最后,我们可以开始从摄像头中获取视频流并对其进行处理。使用以下代码段开始视频捕捉: videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame); videoSource.Start(); 在以上代码中,videoSource_NewFrame是处理新帧的方法。当视频捕捉设备提供新的图像时,将调用该方法。 总体而言,可以通过AForge库轻松地设置摄像头参数,并利用该库实现计算机视觉和图像处理应用程序。 ### 回答2: AForge.NET是一个强大的计算机视觉和人工智能框架,它是用C#编写的,是开源的,可在Windows平台上使用。AForge提供了许多图像、视频处理和机器学习算法。在AForge中,可以设置和控制摄像头的参数,以获取最佳的图像质量。本文将使用AForge设置摄像头参数实例,探讨如何使用AForge设置并控制摄像头参数。 1. 首先,在Visual Studio中创建一个新的Windows窗体应用程序。 2. 在“工具箱”中将“AForge.Controls”添加到窗体中。 3. 双击窗体以打开代码视图,然后添加以下代码: ```csharp using AForge.Video; using AForge.Video.DirectShow; private FilterInfoCollection videoDevices; private VideoCaptureDevice videoSource; ``` 4. 使用以下代码初始化摄像头: ```csharp private void InitializeCamera() { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) { MessageBox.Show("No camera detected"); } else { videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString); videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); videoSource.Start(); } } ``` 该代码将枚举所有可用的摄像头,并取出第一个摄像头的设备标识符。 5. 使用以下代码设置摄像头参数: ```csharp private void SetCameraParameters() { videoSource.Stop(); videoSource.DisplayPropertyPage(IntPtr.Zero); videoSource.Start(); } ``` 该代码打开“摄像头属性”对话框,可以设置各种摄像头设置,例如亮度对比度、饱和度、白平衡等等。 6. 将以下代码添加到窗体类的顶部: ```csharp void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = bitmap; } ``` 该代码显示捕获到的帧在PictureBox上,以供观察。 7. 在窗体Load事件中初始化摄像头并设置摄像头参数: ```csharp private void Form1_Load(object sender, EventArgs e) { InitializeCamera(); SetCameraParameters(); } ``` 完成以上步骤后,你可以运行程序并测试设置摄像头参数的效果。在“摄像头属性”对话框中更改参数,观察图像显示的变化。 总结:以上示例中的代码可用于设置不同品牌和型号的摄像头的参数。使用AForge.NET框架,我们可以轻松地控制摄像头以获得最佳的图像质量。 ### 回答3: AForge是一个在C#中使用的计算机视觉和人工智能库。它允许开发人员开发各种应用程序,例如图像处理,人脸识别,移动机器人控制和许多其他用例。在AForge中,可以使用类Camera和VideoCaptureDevice来设置摄像头参数。 首先,将AForge库添加到Visual Studio项目中。然后,添加引用using AForge.Video.DirectShow;以便访问视频类。 接下来,您可以列出所有可用的摄像头设备并选择一个设备进行设置: var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); VideoCaptureDevice selectedDevice = new VideoCaptureDevice(videoDevices[0].MonikerString); 其中,FilterInfoCollection用于列出所有可用视频输入设备的过滤器,VideoInputDevice指示设备类别,而MonikerString返回设备的独特标识符。 要更改摄像头的参数,例如分辨率和帧速率,您可以使用VideoCapabilities属性。例如,要更改分辨率为640x480像素,帧速率为30 fps,请执行以下操作: selectedDevice.VideoResolution = selectedDevice.VideoCapabilities.FirstOrDefault(v => v.FrameSize.Width == 640 && v.FrameSize.Height == 480 && v.AverageFrameRate == 30); 这将设置视频设备的VideoResolution属性为特定视频功能。 最后,您需要打开摄像头并开始捕捉图像: selectedDevice.Start(); selectedDevice.NewFrame += new NewFrameEventHandler(captureDevice_NewFrame); 在NewFrame事件处理程序中,您可以对图像进行处理或保存到磁盘上的文件中。 以上是使用AForge库设置摄像头参数的一个简单实例。实际上,AForge库提供了许多更高级的功能,例如分类器和跟踪算法,可以使用它来开发更高级的计算机视觉应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值