Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to call the USB camera in C #

2025-04-01 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

This article mainly introduces "how C#calls USB camera". In daily operation, I believe many people have doubts about how C#calls USB camera. Xiaobian consulted all kinds of information and sorted out simple and easy operation methods. I hope to help you answer the doubts of "how C#calls USB camera"! Next, please follow the small series to learn together!

1. AForge installation

Right-click the project, search for Aforge class library in the Manage NuGet package, and select Install, as shown below

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摄像头"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report