首先看看調用攝像頭
FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);//攝像頭執行個體對象
int sumVideo = videoDevices.Count;//找到計算機所有的攝像頭 數量 ,沒有攝像頭的話 就等于 0
videoSource.ProvideSnapshots = true; //是否設定快門鍵 作用于攝像頭,下面 videoSource_SnapshotFrame; 快門事件是否生效.
videoSource.SnapshotFrame += videoSource_SnapshotFrame;快門事件
videoSource.NewFrame += videoSource_NewFrame; //在此事件中把把攝像頭共享給其他控件使用 如(pic圖檔控件,攝像頭畫面可有在顯示在pic控件中)
如果使用 Controls videoSourcePlayer控件的話.則使用以下語句 擷取攝像源
videoSourcePlayer = new AForge.Controls.VideoSourcePlayer();
videoSourcePlayer.VideoSource = videoSource;
videoSourcePlayer.Start();
videoSource_NewFrame 事件實作
void videoSource_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
Image img = (Image)eventArgs.Frame.Clone();
PicVideo.BackgroundImage = img;
GC.Collect();
}
這樣就可以把攝像頭畫面 賦予 PicVideo 控件中顯示(PictureBox圖檔控件)
videoSource_SnapshotFrame 事件實作 - 快門事件(如攝像頭有快門鍵話,按下就可以觸發此事件)-如出現按下快門鍵沒有觸發此事件的情況,則可能攝像頭按鍵不支援.(情況較少出現)
void videoSource_SnapshotFrame(object sender, NewFrameEventArgs eventArgs)
{
try
{
//按下快門事件,就截圖照片. 指派于 pictureBox1 控件中顯示
pictureBox1.BackgroundImage = Image.FromHbitmap(videoSourcePlayer.GetCurrentVideoFrame().GetHbitmap());
}
catch(Exception ex)
{
}
}
按以上步驟 正常情況是可成功操作攝像頭的.
demo 下載下傳位址:百度雲 http://pan.baidu.com/s/1o6A1D9o (附帶DLL)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN0LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9kERORTSE5UeBRUT5VEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zM0MDOzczM0ETMwITM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)