下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
c# 使用AForge.NET *** 作摄像头 *** 作代码AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。 根据网上的方法,运行程序摄像头出来了,但是怎么截图呢?找到一个显示图片方法如下
private voID vIDeo_NewFrame(object sender,NewFrameEventArgs eventArgs) { Bitmap img = (Bitmap)eventArgs.Frame.Clone(); //do processing here pictureBox1.Image = img; }开始参考这句代码写了:
private voID vIDeo_NewFrame(object sender,NewFrameEventArgs eventArgs) { Bitmap img = (Bitmap)eventArgs.Frame.Clone(); string imgPath = dirc + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg"; img.Save(imgPath); }但是点击截图程序就自动不停截了大量的图片,最后导致程序出问题。想了一个笨方法,可以只截一次图:
private int flag = 1; /// <summary> /// 截图 /// </summary> private voID toolStripbutton3_Click(object sender,EventArgs e) { flag = 0; 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; } }完整的程序代码如下:
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.IO; using AForge; using AForge.VIDeo; using AForge.VIDeo.DirectShow; using AForge.Imaging; using AForge.Imaging.Filters; namespace Camera { public partial class Form1 : Form { private FilterInfoCollection vIDeoDevices; private VIDeoCaptureDevice vIDeoSource; private int flag = 1; private string dirc = System.AppDomain.CurrentDomain.BaseDirectory + "Images"; //截图保存的目录 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(); } /// <summary> /// 连接开启摄像头 /// </summary> private voID CameraConn() { vIDeoSource = new VIDeoCaptureDevice(vIDeoDevices[tscbxCameras.Selectedindex].MonikerString); vIDeoSource.DesiredFrameSize = new Size(500,300); vIDeoSource.DesiredFrameRate = 1; vIDePlayer.VIDeoSource = vIDeoSource; vIDePlayer.Start(); } /// <summary> /// 关闭摄像头 /// </summary> private voID toolStripbutton2_Click(object sender,EventArgs e) { vIDePlayer.SignalToStop(); vIDePlayer.WaitForStop(); } private voID Form1_FormClosing(object sender,FormClosingEventArgs e) { toolStripbutton2_Click(null,null); } /// <summary> /// 截图 /// </summary> private voID toolStripbutton3_Click(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; } } } }
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的c# 使用AForge.NET *** 作摄像头 *** 作代码全部内容,希望文章能够帮你解决c# 使用AForge.NET *** 作摄像头 *** 作代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)