目录

C#调用USB摄像头使用AForge类库进行开发

1、AForge安装

2、下载完毕后进行USB摄像头类封装


C#调用USB摄像头使用AForge类库进行开发

1、AForge安装

右击工程,在管理NuGet程序包中搜索Aforge类库,选择安装,如下图所示

2、进行USB摄像头类封装

a、初始化,初始化时要注意,加载的设备分辨率需要人工配置,如果配置分辨率不存在需要从默认的分辨率中选择

                videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);if (videoDevices.Count > 0 && videoDevices.Count >= CameraIndex){FilterInfo info = videoDevices[videoDevices.Count - 1];videoSource = new VideoCaptureDevice(info.MonikerString);if (videoSource.VideoCapabilities.Length > 0){VideoCapabilities tmp = videoSource.VideoCapabilities.First(x => x.FrameSize.Width == LocalSize.Width &&x.FrameSize.Height == LocalSize.Height);if (tmp != null){videoSource.SnapshotResolution = tmp;videoSource.VideoResolution = tmp;}else{int index = (videoSource.VideoCapabilities.Length + 1) / 2;tmp = videoSource.VideoCapabilities[index];}videoSourcePlayer.VideoSource = videoSource;videoSourcePlayer.Start();videoSource.NewFrame += new NewFrameEventHandler(Video_NewFrame);}}}catch (Exception ex){LogHelper.Debug(ex);}

b、绑定回调方法,此方法在摄像头成功预览之后会实时返回数据帧,封装时可以传入PictureBox,把回调旋转后的图片显示在此控件上

        private void Video_NewFrame(object sender, NewFrameEventArgs eventArgs){try{Bitmap video = (Bitmap)eventArgs.Frame.Clone();BmpRotate(video);if (UsbVideo != null)UsbVideo.Image = video;}catch (Exception ex){LogHelper.Debug(ex);}}/// <summary>/// 图像旋转/// </summary>/// <param name="_bmp"></param>private void BmpRotate(Bitmap _bmp){try{if (CameraRotate == "0"){}else if (CameraRotate == "90"){_bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);}else if (CameraRotate == "180"){_bmp.RotateFlip(RotateFlipType.Rotate180FlipNone);}else if (CameraRotate == "270"){_bmp.RotateFlip(RotateFlipType.Rotate270FlipNone);}}catch (Exception ex){LogHelper.Debug(ex);}}

c、抓图事件,手动抓图事件,通过调用GetCurrentVideoFrame()方法获取Bitmap图片

        public Bitmap GetCurrentVideoFrame(){Bitmap bmp = null;try{bmp = videoSourcePlayer.GetCurrentVideoFrame();BmpRotate(bmp);}catch (Exception ex){LogHelper.Debug(ex);}return bmp;}

d、摄像头重连,此类库中videoSourcePlayer有个属性IsRunning可以判断是否USB摄像头预览中,可以对设备进行重连

        private FilterInfoCollection videoDevices = null; //摄像头设备public VideoCaptureDevice videoSource = null; //视频的来源选择private VideoSourcePlayer videoSourcePlayer = new VideoSourcePlayer();public Bitmap img = null;public int CameraIndex = 1;/// <summary>/// 默认分辨率/// </summary>public Size LocalSize = new Size(640, 480);bool isHave = false;public string CameraRotate = "0";private System.Windows.Forms.PictureBox UsbVideo = null;public void ReConnect(){try{if (!videoSourcePlayer.IsRunning){videoSource.Stop();videoSource.Start();}}catch (Exception){}}

C# 调用USB摄像头相关推荐

  1. 五十、opencv调用USB摄像头并保存图片

    @Author: Runsen opencv OpenCV是计算机视觉的一个模块. OpenCV可以通过图像处理减少图像噪声,调整图像亮度.颜色或者对比度等等.想要进一步系统了解OpenCV图像处理基 ...

  2. AndroidUSBCamera调用USB摄像头问题

    UVC_ERROR_INVALID_DEVICE not open camera:err=-50 由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头 ...

  3. C#调用usb摄像头的实现方法

    1.下载aforge类库,下载地址:,我下载的版本是:aforge.net framework-2.2.5.exe: 2.下载安装好后,将下载类库中的release文件夹复制到c#项目的可执行文件文件 ...

  4. ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。

    项目中使用opencv调用usb摄像头,运行过程中,会出现摄像头掉线的情况.猜测掉线原因是硬件相关,可能是摄像头,也可能是usb线和端口. 这里主要介绍两种掉线情况以及代码重连摄像头的方式. 1.第一 ...

  5. C++中调用usb摄像头并保存图片【学习记录第1篇】

    [学习记录第1篇]C++中通过OPENCV调用usb摄像头并保存图片 准备 外置USB摄像头代码 外置USB摄像头运行结果 外置USB超声波探头代码 外置USB超声波探头运行结果 第一篇博客的感想 准 ...

  6. 讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头

    讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头 首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了. 主要问题是如何让opencv能 ...

  7. Jetson NX YOLOV目标检测学习笔记1----CV调用USB摄像头

    1.相关的包安装(安装步骤自行百度) python 版本3.6.9 pip3 install opencv-python=='xxxx' 其中xxx为对应版本号(注意:opencv我用到的版本是ope ...

  8. MATLAB调用USB摄像头实现过程

    使用USB Webcams包进行调用和打开 Matlab自身不支持直接读取摄像头数据,需要到Image Acquisition Toolbox Support Package中安装"MATL ...

  9. MATLAB调用USB摄像头的过程记录

    目录 01-测试USB摄像头是否正常工作 02-安装USB Webcams硬件支持包 03-调用系统中的USB摄像头 01-测试USB摄像头是否正常工作 首先将USB摄像头连接上电脑主机,然后通过Wi ...

最新文章

  1. 百度地图API开发概述
  2. 关于Core Data的一些整理(一)
  3. c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用
  4. Android Studio快捷键(MAC版)
  5. OpenKG 祝大家元宵节快乐!
  6. Python——如何获得字符串的唯一编码
  7. 传统的主从复制的概念和要点
  8. python--笔记
  9. ]MySQL操作命令语句实例
  10. Android Studio的反编译工具使用。
  11. 【C++】模板(函数模板,类模板,模板的特化,模板的分离编译)
  12. java工作日和节假日判断
  13. Android OTA 差分包制作
  14. PHP第三章到第七章
  15. shell基础知识及变量
  16. 04HTML5学习之网页设计
  17. 大数据_数据来源类型
  18. 6-3 sdust-Java-模拟主板、USB口、TypeC口、PS2口设备 (20 分)
  19. 自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)
  20. 这一周通过了GoogleSummer of Code谷歌编程之夏

热门文章

  1. 操作系统——页面置换算法练习题
  2. 工作流引擎被各种开发语言调用的思考
  3. d2lzh_pytorch的安装
  4. JAVA中的字符编码
  5. java 根据输入的两个数值计算日环比-代码示例
  6. 关于查询二级分类的简单方法
  7. 原生开发什么意思_APP原生开发和混合开发的区别你了解多少
  8. 不同意安装条款就没法使用?新法规对APP霸王条款说“不”
  9. 少儿编程教育培训机构加盟
  10. 【LINGO】lingo 软件简介