C#简单的Aforge调用摄像头
2015-11-15 09:50
639 查看
突然了解到了Aforge这个类能实现许多人工智能、图像视频处理、神经算法等等功能, 就想接触一下这个类,网络上使用它的程序也挺多, 看了一些相关类的使用之后, 便写了个C#调用摄像头的小程序
![](https://img-blog.csdn.net/20151115095211052?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
首先,需要下载Aforge类, 然后引用它 ,上面是我的using ,Threading线程那个没什么大用,做了个信息提示而已
控件里面添加Aforge.Controls.dll 里面的一个控件VideoSourcePlayer,然后拖拽就行
下面po出代码:
首先声明一个
下面是连接按键和 关闭按键的方法 ,主要就是实现连接和关闭摄像头
保存按键的方法如下,主要是对目录选择和文件起名,以及对图片的保存:
一些label发生改变的我就不po出来了,把线程那个加上,主要还是改变下面状态栏里面 label 内容做个提示用的:
最后 FromClosed事件要关闭摄像头:
using AForge; using AForge.Controls; using AForge.Video; using AForge.Video.DirectShow; using Size = System.Drawing.Size; using System.Media; using System.Drawing.Imaging; using System.Windows.Media.Imaging; using System.IO; using System.Windows; using System.Threading;
首先,需要下载Aforge类, 然后引用它 ,上面是我的using ,Threading线程那个没什么大用,做了个信息提示而已
控件里面添加Aforge.Controls.dll 里面的一个控件VideoSourcePlayer,然后拖拽就行
下面po出代码:
首先声明一个
FilterInfoCollection videoDevices;
//下面是fromload方法体内, 主要是检测本机摄像头,然后添加到combobox里面供选择
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); int i = 0; foreach (FilterInfo device in videoDevices) { toolStripComboBox1.Items.Add(videoDevices[i].Name.ToString()); i++; } toolStripStatusLabel2.Text = "关闭 "; toolStripStatusLabel4.Text = "未选择 "; toolStripStatusLabel5.Text = "";
下面是连接按键和 关闭按键的方法 ,主要就是实现连接和关闭摄像头
<span style="white-space:pre"> </span>//连接摄像头 FilterInfo info; // info = (FilterInfo)toolStripComboBox1.SelectedItem; info = videoDevices[toolStripComboBox1.SelectedIndex]; VideoCaptureDevice videoSource = new VideoCaptureDevice(info.MonikerString); videoSource.DesiredFrameRate = 1; videoSourcePlayer1.VideoSource = videoSource; videoSourcePlayer1.Start(); toolStripStatusLabel2.Text = "开启中 "; //关闭摄像头 videoSourcePlayer1.SignalToStop(); videoSourcePlayer1.WaitForStop(); toolStripStatusLabel2.Text = "关闭 ";
保存按键的方法如下,主要是对目录选择和文件起名,以及对图片的保存:
if (videoSourcePlayer1.IsRunning) { string path = DiagtextBox.Text.ToString()+"\\"; BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( videoSourcePlayer1.GetCurrentVideoFrame().GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); PngBitmapEncoder pE = new PngBitmapEncoder(); pE.Frames.Add(BitmapFrame.Create(bitmapSource)); //path.Replace("\\","//"); string picName = path + FileNametextBox.Text.ToString()+ ".jpg"; if (File.Exists(picName)) { UsingThread(" 当前文件夹已有重名文件,保存失败!!!!!!"); //File.Delete(picName); } else { try { using (Stream stream = File.Create(picName)) { pE.Save(stream); while (File.Exists(picName)==false) ; UsingThread(" 保存图片成功 保存时间:" + DateTime.Now.ToString() + "!"); } } catch { UsingThread(" 图片保存失败 ,请检查路径"); } } } else { UsingThread(" 保存失败,请先开启摄像!!!!!!"); }
一些label发生改变的我就不po出来了,把线程那个加上,主要还是改变下面状态栏里面 label 内容做个提示用的:
void UsingThread(string str1) { Thread th2 = new Thread(() => { toolStripStatusLabel5.Text =str1; Thread.Sleep(3000); toolStripStatusLabel5.Text = ""; }); th2.Start(); }
最后 FromClosed事件要关闭摄像头:
videoSourcePlayer1.SignalToStop(); videoSourcePlayer1.WaitForStop();
相关文章推荐
- 拨号网络的简单知识
- DVI 视频接口图文解析
- 一个最简单的vbs类实例代码
- C#实现语音视频录制-附demo源码
- C#最简单的字符串加密解密方法
- Ajax PHP简单入门教程代码
- C#实现控制摄像头的类
- C#调用mmpeg进行各种视频转换的类实例
- C#获取视频某一帧的缩略图的方法
- js实例入门(简单展开或关闭)
- juqery 学习之三 选择器 简单 内容
- asp.net安全、实用、简单的大容量存储过程分页第1/2页
- 显示youtube视频缩略图和Vimeo视频缩略图代码分享
- Apache2与PHP5 for WinXP简单配置技巧
- C#实现调用本机摄像头实例
- PHP使用ffmpeg给视频增加字幕显示的方法
- PHP实现将视频转成MP4并获取视频预览图的方法
- C++实现优酷土豆去视频广告的方法
- PHP简单获取视频预览图的方法
- asp.net 页面中添加普通视频的几种方式介绍