C# 使用AForge调用笔记本摄像头拍照

来源:互联网 发布:bpm软件排名 编辑:程序博客网 时间:2024/05/17 04:41

本人转载博客http://www.cnblogs.com/lidedong/p/5564851.html,使用VS2013实现,有点改进的是释放了一下资源,具体看下面。

连接摄像头设备,这里需要引入

代码:

 

 

using AForge;using AForge.Controls;using AForge.Imaging;using AForge.Video;using AForge.Video.DirectShow;

在工具箱中还需要添加AForge.Control,然后找到VideoSourcePlayer这个控件添加到界面上

直接找到dll拖拽到工具箱就可以了(工具箱先建一个选项)

将在camera里面出现很多控件,找到videoSourcePlayer,拖拽至form窗体

 

 

然后完成了基本设置

定义全局变量

FilterInfoCollection videoDevices;
VideoCaptureDevice videoSource;
public int selectedDeviceIndex = 0;

然后连接摄像头

复制代码
 1 private void btn_getdevice_Click(object sender, EventArgs e) 2         { 3             videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 4             selectedDeviceIndex = 0; 5             videoSource = new VideoCaptureDevice(videoDevices[selectedDeviceIndex].MonikerString);//连接摄像头。 6             videoSource.VideoResolution = videoSource.VideoCapabilities[selectedDeviceIndex]; 7             videoSourcePlayer1.VideoSource = videoSource; 8             // set NewFrame event handler 9             videoSourcePlayer1.Start();  10         }      
复制代码

 

拍照:

复制代码
1  private void button1_Click(object sender, EventArgs e)2         {3             if (videoSource == null)4                 return;5             Bitmap bitmap = videoSourcePlayer1.GetCurrentVideoFrame();6             string fileName = "54250.jpg";//DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ff") + ".jpg";7             bitmap.Save(@"E:\temp\" + fileName, ImageFormat.Jpeg);8             bitmap.Dispose();9         }
复制代码

 

 

 

这样就完成了拍照功能

 

 

效果图

 

最后别忘记释放资源

我加了一个按钮填写事件:

    private void button3_Click(object sender, EventArgs e)
        {
            videoSourcePlayer1.Stop();
            videoSourcePlayer1.Dispose();
          
        }

最后附上aforge的完整dll

为了方便使用,直接把用到的dll放在百度网盘上了,用的可以下。
链接: http://pan.baidu.com/s/1c10gIHU 密码: e8jj