C# 调用USB摄像头
目录
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摄像头相关推荐
- 五十、opencv调用USB摄像头并保存图片
@Author: Runsen opencv OpenCV是计算机视觉的一个模块. OpenCV可以通过图像处理减少图像噪声,调整图像亮度.颜色或者对比度等等.想要进一步系统了解OpenCV图像处理基 ...
- AndroidUSBCamera调用USB摄像头问题
UVC_ERROR_INVALID_DEVICE not open camera:err=-50 由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头 ...
- C#调用usb摄像头的实现方法
1.下载aforge类库,下载地址:,我下载的版本是:aforge.net framework-2.2.5.exe: 2.下载安装好后,将下载类库中的release文件夹复制到c#项目的可执行文件文件 ...
- ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。
项目中使用opencv调用usb摄像头,运行过程中,会出现摄像头掉线的情况.猜测掉线原因是硬件相关,可能是摄像头,也可能是usb线和端口. 这里主要介绍两种掉线情况以及代码重连摄像头的方式. 1.第一 ...
- C++中调用usb摄像头并保存图片【学习记录第1篇】
[学习记录第1篇]C++中通过OPENCV调用usb摄像头并保存图片 准备 外置USB摄像头代码 外置USB摄像头运行结果 外置USB超声波探头代码 外置USB超声波探头运行结果 第一篇博客的感想 准 ...
- 讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头
讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头 首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了. 主要问题是如何让opencv能 ...
- Jetson NX YOLOV目标检测学习笔记1----CV调用USB摄像头
1.相关的包安装(安装步骤自行百度) python 版本3.6.9 pip3 install opencv-python=='xxxx' 其中xxx为对应版本号(注意:opencv我用到的版本是ope ...
- MATLAB调用USB摄像头实现过程
使用USB Webcams包进行调用和打开 Matlab自身不支持直接读取摄像头数据,需要到Image Acquisition Toolbox Support Package中安装"MATL ...
- MATLAB调用USB摄像头的过程记录
目录 01-测试USB摄像头是否正常工作 02-安装USB Webcams硬件支持包 03-调用系统中的USB摄像头 01-测试USB摄像头是否正常工作 首先将USB摄像头连接上电脑主机,然后通过Wi ...
最新文章
- 百度地图API开发概述
- 关于Core Data的一些整理(一)
- c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用
- Android Studio快捷键(MAC版)
- OpenKG 祝大家元宵节快乐!
- Python——如何获得字符串的唯一编码
- 传统的主从复制的概念和要点
- python--笔记
- ]MySQL操作命令语句实例
- Android Studio的反编译工具使用。
- 【C++】模板(函数模板,类模板,模板的特化,模板的分离编译)
- java工作日和节假日判断
- Android OTA 差分包制作
- PHP第三章到第七章
- shell基础知识及变量
- 04HTML5学习之网页设计
- 大数据_数据来源类型
- 6-3 sdust-Java-模拟主板、USB口、TypeC口、PS2口设备 (20 分)
- 自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)
- 这一周通过了GoogleSummer of Code谷歌编程之夏