c# 利用AForge.NET组件操作摄像头

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;

}

}

}

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券