概述

AForge.NET是一个专门为开发者和研究者基于C#框架设计的,提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。本文主要讲解利用AForge进行图像采集的相关内容【包括拍照,视频录制】,仅供学习分享使用。

AForge.Net相关类库介绍

  • AForge.dll 是框架的核心基础类库,为其他类库提供服务。
  • AForge.Controls.dll 包含AForge.Net的UI控件,主要用于页面显示。
  • AForge.Imaging.dll 主要是框架中用于图像处理的类库,主要负责图像的处理
  • AForge.Video.dll 主要是框架中对视频处理的类库。
  • AForge.Video.DirectShow.dll 主要是通过DirectShow接口访问视频资源的类库。
  • AForge.Video.FFMPEG.dll 是一个还未正式发布的类库,通过FFMPEG类库对视频进行读写。

通过NuGet管理器引入AForge类库

项目名称右键-->管理NuGet程序包,打卡NuGet包管理器  如下所示:

C# 利用AForge进行摄像头信息采集

示例效果图

本示例主要包括打开,关闭摄像头,拍照,连续拍照,开始录制视频,暂停录制视频,停止录视频,退出等功能。

如下所示:左侧为摄像头投影区域,右侧为图像控件,显示拍照所得的图片

C# 利用AForge进行摄像头信息采集

核心代码

获取视频设备列表以及设备对应的分辨率

 1 /// <summary>
 2         /// 页面加载摄像头设备
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void FrmMain_Load(object sender, EventArgs e)
 7         {
 8             try
 9             {
10                 this.lblTime.Text = "";
11                 // 枚举所有视频输入设备
12                 videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
13                 if (videoDevices.Count == 0)
14                 {
15                     lblStatus.Text = "No local capture devices";
16                 }
17                 foreach (FilterInfo device in videoDevices)
18                 {
19                     int i = 1;
20                     cmbDevices.Items.Add(device.Name);
21                     lblStatus.Text = ("摄像头" + i + "初始化完毕..." + "\n");
22                     i++;
23                 }
24                 cmbDevices.SelectedIndex = 0;
25             }
26             catch (ApplicationException)
27             {
28                 this.lblStatus.Text = "No local capture devices";
29                 videoDevices = null;
30             }
31         }
32 
33         private void cmbDevices_SelectedIndexChanged(object sender, EventArgs e)
34         {
35             this.cmbResolution.Items.Clear();
36             videoSource = new VideoCaptureDevice(videoDevices[cmbDevices.SelectedIndex].MonikerString);
37             foreach(var cap in videoSource.VideoCapabilities) {
38                 this.cmbResolution.Items.Add(string.Format("({0},{1})",cap.FrameSize.Width,cap.FrameSize.Height));
39             }
40             if (this.cmbResolution.Items.Count > 0)
41             {
42                 this.cmbResolution.SelectedIndex = 0;
43             }
44         }
View Code

相关文章:

  • 2021-11-17
  • 2022-12-23
  • 2021-08-15
  • 2021-10-13
  • 2021-12-22
  • 2021-11-22
  • 2021-12-13
猜你喜欢
  • 2021-04-22
  • 2021-06-06
  • 2022-12-23
  • 2021-04-01
  • 2021-12-30
  • 2022-12-23
相关资源
相似解决方案