AForge官网地址:http://www.aforgenet.com/framework/

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using AForge.Video.DirectShow;
  10. using AForge.Video;
  11. namespace AForgeDemo
  12. {
  13. public partial class Form1 : Form
  14. {
  15. private bool DeviceExist = false;
  16. private FilterInfoCollection videoDevices;
  17. private VideoCaptureDevice videoSource = null;
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22. private void Form1_Load(object sender, EventArgs e)
  23. {
  24. getCamList();
  25. }
  26. private void getCamList()
  27. {
  28. try
  29. {
  30. videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
  31. cbDev.Items.Clear();
  32. if (videoDevices.Count == 0)
  33. throw new ApplicationException();
  34. DeviceExist = true;
  35. foreach (FilterInfo device in videoDevices)
  36. {
  37. cbDev.Items.Add(device.Name);
  38. }
  39. cbDev.SelectedIndex = 0;
  40. }
  41. catch (ApplicationException)
  42. {
  43. DeviceExist = false;
  44. cbDev.Items.Add("无设备");
  45. }
  46. }
  47. private void CloseVideoSource()
  48. {
  49. if (!(videoSource == null))
  50. if (videoSource.IsRunning)
  51. {
  52. videoSource.SignalToStop();
  53. videoSource = null;
  54. }
  55. }
  56. private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
  57. {
  58. Bitmap img = (Bitmap)eventArgs.Frame.Clone();
  59. picVideo.Image = img;
  60. }
  61. private void Form1_FormClosed(object sender, FormClosedEventArgs e)
  62. {
  63. CloseVideoSource();
  64. }
  65. private void btnOpen_Click(object sender, EventArgs e)
  66. {
  67. if (DeviceExist)
  68. {
  69. videoSource = new VideoCaptureDevice(videoDevices[cbDev.SelectedIndex].MonikerString);
  70. videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
  71. CloseVideoSource();
  72. videoSource.DesiredFrameSize = new Size(picVideo.Width, picVideo.Height);
  73. videoSource.Start();
  74. lbinfo.Text = "设备运行...";
  75. }
  76. else
  77. {
  78. lbinfo.Text = "没有选择设备";
  79. }
  80. }
  81. private void btnStop_Click(object sender, EventArgs e)
  82. {
  83. if (videoSource.IsRunning)
  84. {
  85. CloseVideoSource();
  86. lbinfo.Text = "设备停止";
  87. }
  88. }
  89. }
  90. }

效果图:

附件下载

C# 使用AForge调用摄像头的更多相关文章

  1. AForge调用摄像头拍照时设置分辨率

    简单记录下AForge2.2.5.0版本调用摄像头拍照时设置分辨率的方法. FilterInfo info = _videoDevices[0];//获取第一个摄像头 _cameraDevice = ...

  2. C#使用Aforge调用摄像头拍照

    一. 新建一个Winform项目 二.使用Nuget添加引用 安装下图中红色框住的两个程序包 安装完后发现安装了如下图的程序包,这是因为上述两个程序包存在对其它程序包的依赖. 三.编写程序 1. 窗体 ...

  3. Emgucv(一)Aforge切换摄像头并调用摄像头属性

    一.新建一个Windows窗体应用程序,在Form1窗体上添加一个PictureBox控件.一个ComboBox控件,命名为PictureBox1.cbCapture,还有两个Button控件,Tex ...

  4. C# - VS2019调用AForge库实现调用摄像头拍照功能

    前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...

  5. C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能

    网上找了很多代码,都比较零散,以下代码纯自己手写,经过测试.下面有链接,下载后可以直接使用. 介绍: 自动识别:点击Start按钮会调用PC摄像头,代码内置Timer,会每100毫秒识别一下当前摄像头 ...

  6. 【C#】#100 调用摄像头

    需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll   [Demo下载,Dem ...

  7. C# winfrom调用摄像头扫描二维码(完整版)

    前段时间看到一篇博客,是这个功能的,参考了那篇博客写了这个功能玩一玩,没有做商业用途.发现他的代码给的有些描述不清晰的,我就自己整理一下发出来记录一下. 参考博客链接:https://www.cnbl ...

  8. unity调用摄像头的方法

    http://blog.csdn.net/cocoa_china/article/details/10527995 using UnityEngine; using System.Collection ...

  9. java javacv调用摄像头并拍照

    调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...

  10. Android入门(十六)调用摄像头相册

    原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xml ...

随机推荐

  1. Ubuntu20.04/22.04 ESP32 命令行开发环境配置

    ESP32 芯片系列 ESP32分三个系列 ESP32-S ESP32-S3: Xtensa 32位 LX7 双核 240 MHz, 384KB ROM, 512KB SRAM, QFN7x7, 56 ...

  2. Oracle字符串行专列(字符串聚合技术)

    原文链接:http://oracle-base.com/articles/misc/string-aggregation-techniques.php 1     String Aggregation ...

  3. 栈溢出-ret2libc地址泄露笔记

    作为一名初学者,在碰到很多攻击思路的时候会感觉很妙,比如gadget的构造,这题的sh参数截断. 1.首先分析程序架构和保护措施. 2.使用IDA开始判断程序是否具备最简单的栈溢出执行条件: ret2 ...

  4. std::shared_ptr 和 std::vector 的结合使用

    #include <iostream> #include <string> #include <vector> std::shared_ptr<std::ve ...

  5. win32-使用FillRect绘制具有渐变颜色的客户区域背景

    void OnEraseBkGnd(HWND hwnd) { /* Vars */ HDC dc; /* Standard Device Context; used to do the paintin ...

  6. python枚举之Enum模块

    枚举是与多个唯一常量值绑定的一组符号(即成员).枚举中的成员可以进行身份比较,并且枚举自身也可迭代. 枚举成员名称建议使用大写字母 # 示例 from enum import Enum,unique, ...

  7. 【Azure 事件中心】 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息

    问题描述 使用IOT Hub的Events功能,使用Event Grid(事件网格)订阅IOTHub状态消息,发送到Azure Functions.那如何来创建Event Grid触发的Functio ...

  8. 使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

    本文由社区用户 Albert 贡献,首发于 NebulaGraph 论坛,旨在提供多一种的部署方式使用 NebulaGraph. 在本文,我将会详细地记录下我用 K8s 部署分布式图数据库 Nebul ...

  9. [Python] 子线程退出孙线程不退出

    遇到了一个大坑! 如图,在子线程ThreadFunc退出之后,ThreadFunc2依旧在运行... 根本不会结束 但是官方文档中说明了,只要设置了daemon不为None 就能设置子线程是守护线程, ...

  10. 彩虹猫IDA分析记录

    目录 彩虹猫分析 概述 无参启动 带/main参数启动 带/watchdog参数启动 MBR引导程序和动画程序 第一段 引导代码 第二段 动画代码 其他函数 扭曲桌面 扰乱鼠标 钩子函数 桌面绘制图标 ...