首页 > 代码库 > 使用aforg.net 捕获摄像头 附源码

使用aforg.net 捕获摄像头 附源码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Drawing;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
 
namespace CameraCapture
{
    public partial class Form1 : Form
    {
        FilterInfoCollection filterInfoCollection;
        VideoCaptureDevice captureDevice;
        public Form1()
        {
            InitializeComponent();
            filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            foreach (FilterInfo item in filterInfoCollection)
            {
                this.comboBox1.Items.Add(item.Name);
            }
            this.comboBox1.SelectedIndex = 0;
            //先初始化一下 否则在下面判断是否已运行时会报错
            captureDevice = new VideoCaptureDevice();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (captureDevice.IsRunning)
                captureDevice.Stop();
            captureDevice = new VideoCaptureDevice(filterInfoCollection[comboBox1.SelectedIndex].MonikerString);
            captureDevice.NewFrame += captureDevice_NewFrame;
            captureDevice.Start();
        }
 
        void captureDevice_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            this.pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
        }
        /// <summary>
        /// 关闭后结束捕获 释放资源
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (captureDevice.IsRunning)
            {
                captureDevice.Stop();
            }
        }
    }
}

  

 

源代码下载:http://files.cnblogs.com/DragonX/CameraCapture.zip