AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。

根据网上的方法,运行程序摄像头出来了,但是怎么截图呢?找到一个显示图片方法如下

 private void video_NewFrame(object sender, NewFrameEventArgs eventArgs){Bitmap img = (Bitmap)eventArgs.Frame.Clone();//do processing herepictureBox1.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, 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;    }}       }
}

界面效果如下:

c# 利用AForge.NET组件操作摄像头相关推荐

  1. C# 利用Aforge调用本机摄像头完成拍照,录像

    用C#做了一个简单的摄像头录像项目,记录一下. 实现功能 打开.关闭摄像头并显示相应画面 实现拍照功能 实现录像功能 实现保存图片.录像的功能 运行界面效果 winForm控件 首先安装NuGet程序 ...

  2. C# 调用AForge类库操作摄像头

    如有雷同,不胜荣幸,若转载,请注明 最近做项目需要操作摄像头,在网上百度了很多资料,很多都是C#调用window API 发送SendMessage,实现操作摄像头,但是C#调用window API的 ...

  3. c# 利用AForge和百度AI开发实时人脸识别

    baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是 ...

  4. C#操作摄像头实现拍照监控录像功能

    从正式工作以来一直做的都是基于B/S的Web开发,已经很长时间不研究C/S的东西了,但是受朋友的委托,帮他做一下拍照的这么个小功能.其实类似的代码网上有很多,但是真的能够拿来运行的估计也没几个.本来是 ...

  5. 初识二维码 第二十讲 二维码解码程序的组件之一 摄像头拍照功能

    初识二维码 第二十讲    二维码解码程序的组件之一 摄像头拍照功能 解码程序的第一个环节是通过摄像头这个硬件,得到二维码的图片. 对摄像头的工作原理来说,简单的描述如下:1是从摄像头得到模拟信号, ...

  6. storybook初探:利用storybook构建组件文档库

    storybook初探:利用storybook构建组件文档库 之前的一些项目上用到了storybook来构建组件的文档库,虽不够完善,但仍总结了一些简单的内容以供回顾. Storybook常用来打造团 ...

  7. 利用Python读取并操作注册表

    利用Python读取并操作注册表 一.Python与注册表相关的库 winreg(主要) win32api 二.注册表结构:键.值 三.winreg--访问Windows注册表 1.模块功能: win ...

  8. 利用返回引用来操作结构体

    1 #include "stdafx.h" 2 #include <iostream.h> 3 #include <string.h> 4 5 /***** ...

  9. java list 删除 遍历_Java list利用遍历进行删除操作3种方法解析

    Java list利用遍历进行删除操作3种方法解析 这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...

最新文章

  1. Meanshift解析
  2. 网站开发与客户之间的流程
  3. Leetcode690.Employee Importance员工的重要性
  4. 对象存储,为什么那么火?
  5. 文件描述符file descriptor与inode的相关知识
  6. kallsyms 压缩_initrd.img、System.map学习札记
  7. Spring Boot AOP的使用
  8. response.contenttype
  9. Effects on PV3D
  10. 英特尔® 实感™ SDK 架构
  11. WPF界面设计—撸大师
  12. 2018.07.27 bzoj3064: Tyvj 1518 CPU监控(线段树)
  13. adobe ae cs6中文版汉化(11.02)win版汉化安装教程
  14. 【Android TV】 遥控器Enter键无法调出软键盘
  15. SNS、FaceBook、导航设计等等
  16. 前端js计算抽奖概率
  17. 7.PCIE配置空间读写软件
  18. 《经济学讲义》-李俊慧读书笔记
  19. UISlider 滑动条基本属性
  20. 人工智能轨道交通行业周刊-第2期(2022.6.13-6.19)

热门文章

  1. vue的页码组件的页码重置为1
  2. 棋牌游戏开发会low吗 中国棋牌文化底蕴探究
  3. 为什么C标识符不能以数字开头
  4. pacemaker和keepalived的区别
  5. 洛谷P1287 盒子与球
  6. weblogic 启动常见错误解决
  7. 【krpano】可拖拽相框遮罩
  8. VCS和Verdi学习
  9. left join和right join
  10. Failed to load response data:No data found for resource with given identifier