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组件操作摄像头
- c# 利用AForge.NET组件操作摄像头
- c# 利用AForge.NET组件操作摄像头
- c# 使用AForge.NET操作摄像头操作代码
- c#中odp.net 4.0利用odac操作oracle数据库学习(一)
- C#利用zxing.net操作二维码和条形码
- c#中odp.net 4.0利用odac操作oracle数据库学习(三)
- C#学习之 调用 AForge.NET框架启动摄像头抓拍
- 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
- c#中odp.net 4.0利用odac操作oracle数据库学习(四)
- C#利用zxing.net操作二维码和条形码
- 使用AForge.NET Framework打开摄像头并截图 C#
- c#中odp.net 4.0利用odac操作oracle数据库学习(五)
- ASP.NET C# 邮件发送一:利用Jmail组件发送邮件
- 用C#生成Excel文件的方法,Excel.dll组件生成的方法和设置用ASP.NET操作访问权限
- 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
- C#利用zxing.net操作二维码和条形码
- C#使用Aforge.net framework采集摄像头视频
- c#中odp.net 4.0利用odac操作oracle数据库学习(二)
- C# WPF 快速开发20操作摄像头的开源组件