程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成挪用本機攝像頭實例

C#完成挪用本機攝像頭實例

編輯:C#入門知識

C#完成挪用本機攝像頭實例。本站提示廣大學習愛好者:(C#完成挪用本機攝像頭實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成挪用本機攝像頭實例正文


本文實例源自一個項目,個中須要挪用本機的攝像頭停止攝影,分享給年夜家供年夜家參考之用。詳細步調以下:

硬件情況:聯想C360一體機,自帶攝像頭

編寫情況:vs2010

說話:C# WPF

完成步調:

下載AForge類庫,並添加援用:

using AForge;
using AForge.Controls;
using AForge.Video;
using AForge.Video.DirectShow;
using Size = System.Drawing.Size;

在xaml界面中添加VideoSourcePlayer控件,此次略微說明若何添加外來控件:

在對象箱中添加新的選項卡,右鍵添加選擇項,閱讀選擇控件dll肯定,援用控件便可添加到對象箱中。

列舉一切的攝像頭:

FilterInfoCollection videoDevices;
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

foreach (FilterInfo device in videoDevices)
{
  //可以做出處置
}

銜接攝像頭:

聲明:

FileterInfo info;
info = videoDevices[0];//拔取第一個,此處可作靈巧修改

VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[info.MonikerString);
videoSource.DesiredFrameSize = new System.Drawing.Size(214, 281);
videoSource.DesiredFrameRate = 1;

videoSourcePlayer.VideoSource = videoSource;
videoSourcePlayer.Start();

封閉攝像頭:

videoSourcePlayer.SignalToStop();
videoSourcePlayer.WaitForStop();

攝影:

if (videoSourcePlayer.IsRunning)
{
  string path = "e:\"
  BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
  videoSourcePlayer.GetCurrentVideoFrame().GetHbitmap(),
  IntPtr.Zero,
  Int32Rect.Empty,
  BitmapSizeOptions.FromEmptyOptions());
  PngBitmapEncoder pE = new PngBitmapEncoder();
  pE.Frames.Add(BitmapFrame.Create(bitmapSource));
  string picName = path + "paizhao" + ".jpg";
  if (File.Exists(picName))
  {
 File.Delete(picName);
  }
  using (Stream stream = File.Create(picName))
  {
 pE.Save(stream);
  }
}

項目中請求是攝像頭處於監控狀況,攝影後畫面固定存儲,不滿足可以清空再次停止攝影,直到滿足為止。

做法是在videoSourcePlayer的下面添加一個image控件,由於項目是WPF做的,一切照片顯示只能添加image控件,有兩點須要留意:

1)WPF援用winform控件須要應用WindowsFormsHost控件,所以監控視頻和照片顯示時是控件WindowsFormsHost和image控件的顯示和隱蔽,此處走了一段彎路所以記載上去。

2)image控件的source曾經綁定,然則照片須要清空刪除該照片資本,體系提醒的年夜請安思是資本曾經被占用沒法刪除。處理門路:

聲明:

BitmapImage bmi = new System.Windows.Media.Imaging.BitmapImage();

應用時:

bmi.BgeinInit();

bmi.UriSource = new Uri(picName);

bmi.CacheOption = BitmapCacheOption.OnLoad;

bmi.EndInit();

綁定:

this.image.Source = bmi;

願望本文所述關於年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved