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

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();
            }
        }
    }
}

  

 

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

posted @ 2014-05-25 13:01  DragonX  阅读(1662)  评论(0编辑  收藏  举报