您的位置:首页 > 编程语言 > C#

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

2017-03-17 00:00 197 查看
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;


}


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# AForge.NET组件