簡單介紹C#呼叫USB攝像頭的方法
導讀 | 這篇文章主要為大家詳細介紹了C#呼叫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); } } ////// 影像旋轉 ////// 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) { } }
以上就是本文的全部內容,希望對大家的學習有所幫助。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2886122/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹C#獲取攝像頭拍照顯示影像的方法C#
- Jetson AGX Xavier ROS下呼叫USB單目攝像頭ROS
- C#實現攝像頭呼叫、拍照C#
- 安卓呼叫攝像頭拍照安卓
- Android呼叫攝像頭Android
- C# 使用AForge呼叫筆記本攝像頭拍照C#筆記
- Python opencv USB攝像頭 讀寫PythonOpenCV
- Android呼叫攝像頭拍照Android
- jQuery webcam plugin呼叫攝像頭jQueryWebPlugin
- Android 呼叫攝像頭拍照Android
- Android如何呼叫攝像頭Android
- android studio之簡單呼叫攝像頭並且獲取其照片Android
- html5呼叫攝像頭功能HTML
- 安卓開發之呼叫攝像頭安卓
- 樹莓派上安裝USB網路攝像頭樹莓派
- html5呼叫攝像頭截圖HTML
- 教你如何利用python呼叫攝像頭Python
- html5呼叫手機攝像頭HTML
- 攝像頭黑屏怎麼辦 各種攝像頭不能用的解決方法
- 用樹莓派USB攝像頭做個監控樹莓派
- 照片系列之android呼叫攝像頭拍照Android
- Android開發之呼叫攝像頭拍照Android
- html5呼叫攝像頭實現拍照HTML
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- javascript鏈式呼叫簡單介紹JavaScript
- Win10怎麼開啟攝像頭 win10開啟攝像頭的方法Win10
- javascript呼叫函式的方式簡單介紹JavaScript函式
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- Android呼叫攝像頭拍照並顯示照片Android
- Android 呼叫攝像頭功能【拍照與視訊】Android
- matlab呼叫攝像頭並儲存成幀的形式Matlab
- 簡單介紹Pytorch實現WGAN用於動漫頭像生成PyTorch
- javascript函式呼叫方式簡單介紹JavaScript函式
- windows10攝像頭怎麼開啟_window10怎麼開啟攝像頭的方法Windows
- flash呼叫攝像頭彈出設定框監聽
- 攝像頭操作指南
- Win10專業版攝像頭在哪裡開啟 windows10攝像頭開啟的方法Win10Windows
- ToDesk勾上攝像頭會看到我嗎?如何關閉攝像頭