创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
创新互联建站主要从事做网站、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务荣县,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220这篇文章将为大家详细讲解有关C#利用AForge实现摄像头信息采集的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
概述
AForge.NET是一个专门为开发者和研究者基于C#框架设计的,提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。本文主要讲解利用AForge进行图像采集的相关内容【包括拍照,视频录制】,仅供学习分享使用。
AForge.Net相关类库介绍
通过NuGet管理器引入AForge类库
项目名称右键-->管理NuGet程序包,打卡NuGet包管理器 如下所示:
示例效果图
本示例主要包括打开,关闭摄像头,拍照,连续拍照,开始录制视频,暂停录制视频,停止录视频,退出等功能。
如下所示:左侧为摄像头投影区域,右侧为图像控件,显示拍照所得的图片
核心代码
获取视频设备列表以及设备对应的分辨率
////// 页面加载摄像头设备 /// /// /// private void FrmMain_Load(object sender, EventArgs e) { try { this.lblTime.Text = ""; // 枚举所有视频输入设备 videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) { lblStatus.Text = "No local capture devices"; } foreach (FilterInfo device in videoDevices) { int i = 1; cmbDevices.Items.Add(device.Name); lblStatus.Text = ("摄像头" + i + "初始化完毕..." + "\n"); i++; } cmbDevices.SelectedIndex = 0; } catch (ApplicationException) { this.lblStatus.Text = "No local capture devices"; videoDevices = null; } } private void cmbDevices_SelectedIndexChanged(object sender, EventArgs e) { this.cmbResolution.Items.Clear(); videoSource = new VideoCaptureDevice(videoDevices[cmbDevices.SelectedIndex].MonikerString); foreach(var cap in videoSource.VideoCapabilities) { this.cmbResolution.Items.Add(string.Format("({0},{1})",cap.FrameSize.Width,cap.FrameSize.Height)); } if (this.cmbResolution.Items.Count > 0) { this.cmbResolution.SelectedIndex = 0; } }