c# 利用AForge.NET组件操作摄像头,报错:未引用实例

.按下面这个博客上做的,代码一模一样,该用的组件也都用了。但是一点截图就报错参考链接为http://blog.csdn.net/gdjlc/article/details... .按下面这个博客上做的,代码一模一样,该用的组件也都用了。但是一点截图就报错
参考链接为http://blog.csdn.net/gdjlc/article/details/8445701
报错截图。
下面是我按着敲的代码,也就三四十行。求大神帮我看看。
http://pan.baidu.com/s/1bvp7qu
展开
 我来答
百度网友5165b85
2015-12-12 · TA获得超过858个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:238万
展开全部
//看了下你的代码,错误的原因就是连接的时候重新定义了一个对象。稍改下就好。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Windows.Forms;
using System.Threading;

using AForge;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Imaging;
using AForge.Imaging.Filters;
using System.IO;

namespace Camera
{
    public partial class Form1 : Form
    {
        private FilterInfoCollection videoDevices;

        public VideoCaptureDevice videoSource;  
        private int flag = 1;
        private string dirc = System.AppDomain.CurrentDomain.BaseDirectory + "JPG"; //截图保存的目录  

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (!Directory.Exists(dirc))
                Directory.CreateDirectory(dirc);  

            try
            {
                // 枚举所有视频输入设备
                videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

                if (videoDevices.Count == 0)
                    throw new ApplicationException();

                foreach (FilterInfo device in videoDevices)
                {
                    tscbxCameras.Items.Add(device.Name);
                }

                tscbxCameras.SelectedIndex = 0;
            }
            catch (ApplicationException)
            {
                tscbxCameras.Items.Add("No local capture devices");
                videoDevices = null;
            }
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            CameraConn();
        }

        private void CameraConn()
        {   //你这里重新定义了一个对象,所以出错
            videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);
            videoSource.DesiredFrameSize = new Size(320, 240);
            videoSource.DesiredFrameRate = 1;

            videPlayer.VideoSource = videoSource;
            videPlayer.Start();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            videPlayer.SignalToStop();
            videPlayer.WaitForStop();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            toolStripButton2_Click(null, null);
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            //不懂截图,但还是给你简单完善了下
            flag = 0;
            if (videoSource == null)
            {
                MessageBox.Show("请先连接摄像头");                
            }
            else if (!videoSource.IsRunning)
            {
                MessageBox.Show("摄像头已经关闭,请重新打开");
            }
            else
            {
                videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
            }
        }

        private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
            if (flag == 0)
            {
                string img = dirc + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
                bitmap.Save(img);
                flag = 1;
            }
        } 
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式