C#怎么调用USB摄像头
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍"C#怎么调用USB摄像头",在日常操作中,相信很多人在C#怎么调用USB摄像头问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C#怎么调用USB摄像头"
千家信息网最后更新 2025年01月24日C#怎么调用USB摄像头
这篇文章主要介绍"C#怎么调用USB摄像头",在日常操作中,相信很多人在C#怎么调用USB摄像头问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C#怎么调用USB摄像头"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
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); } } ////// 图像旋转 /// /// 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; ////// 默认分辨率 /// 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摄像头"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
摄像头
摄像
C#
分辨率
学习
方法
设备
选择
事件
图片
更多
封装
帮助
配置
实用
成功
接下来
人工
图像
实时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
四川玩黑色玫瑰服务器
常宁电信网DNS服务器
衍生数据库
网络技术重点总结
郑州云时代互联网信息科技
对于excel数据库
计算机软件开发与应用研究
计算机网络技术的ppt课件
个人还能做服务器么
华为服务器 U盘启动
服务器 进出风温度差
上海至寻网络技术有限公诉
数据库2008安装教程6
开展 网络安全教育活动总结
通信工程IP网络技术
可进行文献传递的数据库有哪些
陇南小程序软件开发公司
嵌入式软件开发在哪个城市好
华为服务器故障处理24
网络技术各种模式
网络安全求职者
乡镇网络安全检查工作总结
服务器u2
数据库正在装载置疑
数据库应用技术第04章
陇南小程序软件开发公司
网络安全工管理岗位职责
网络安全为人民短信
深圳潮流网络技术有限公司简介
sqlite数据库简明教程