c# 使用AForge.NET *** 作摄像头 *** 作代码

c# 使用AForge.NET *** 作摄像头 *** 作代码,第1张

概述c# 使用AForge.NET *** 作摄像头 *** 作代码

下面是内存溢出 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 *** 作摄像头 *** 作代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存