欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Aforge攝像頭調(diào)用簡單實例

 更新時間:2018年10月04日 10:37:46   作者:Snow Yang  
這篇文章主要為大家詳細介紹了基于Aforge攝像頭調(diào)用的簡單實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下

基于C#的Aforge類調(diào)用簡單示例,供大家參考,具體內(nèi)容如下

由題,本程序是使用Aforge類庫調(diào)用攝像頭的demo。

功能:

1.預覽

2.前后攝像頭切換

    1.判斷是否有攝像頭,無則提示
    2.有,判斷攝像頭個數(shù),有1個則直接打開預覽
    3.有2個或以上,提示選擇后打開相應攝像頭預覽
    3.拍照功能

控件:

1.攝像頭列表下拉框:用于選擇攝像頭,如無攝像頭則不能下拉
2.拍照按鈕:用于拍照,照片默認存儲在當前程序運行目錄,名稱為“Aforge.bmp”。如無攝像頭則不能點擊
3.預覽按鈕:用于打開當前選擇攝像頭預覽,如當前選擇攝像頭不變,則不進行重新預覽。如沒有攝像頭則不能點擊
4.提示標簽:用于給出軟件的一些提示
5.預覽控件videoSourcePlayer:用于預覽拍照界面以及實現(xiàn)拍照功能
    該控件需要右擊工具箱-選擇項-.NET選項卡中-瀏覽,找到Aforge.Controls.dll庫添加后才會出現(xiàn)

程序設計

1.加載窗體
    查找所有攝像頭設備

2.預覽按鈕:
    根據(jù)選中攝像頭打開該攝像頭并預覽

3.拍照按鈕:
    記錄當前幀保存為圖像

代碼

程序主要代碼:

添加引用 using AForge.Video.DirectShow;

 ///查找所有攝像頭設備
 private void loadCameraList()
    {
    VideoCaptureDevice cameraDevices = 
    new FilterInfoCollection(FilterCategory.VideoInputDevice);
      if (cameraDevices.Count == 0)
      {
        capture_btn.Enabled = false;
        cameraId_cob.Enabled = false;
        preview_btn.Enabled = false;
        guide_lab.Text = noCameraDevice;
        cameraDevices = null;

      }else if(cameraDevices.Count == 1)
      {
        isSingleCamera = true;
        preview_btn.Enabled = false;
        guide_lab.Visible = false;
      }
      foreach (FilterInfo cameraDevice in cameraDevices)
      {
        cameraId_cob.Items.Add(cameraDevice.Name);
        cameraId_cob.SelectedIndex = 0;
      }
    }
 ///根據(jù)選中攝像頭打開該攝像頭并預覽
 private VideoCaptureDevice cameraDevice;
 private void preview()
    {
      if (null != cameraDevice)
      {//在2個或以上攝像頭進行切換時執(zhí)行
        preview_player.SignalToStop();
        preview_player.WaitForStop();
      }
      cameraDevice = 
      new VideoCaptureDevice(cameraDevices[cameraId_cob.SelectedIndex].MonikerString);
      cameraDevice.DesiredFrameSize = new Size(320, 240);
      cameraDevice.DesiredFrameRate = 1;
      preview_player.VideoSource = cameraDevice;
      preview_player.Start();
    }
///記錄當前幀保存為圖像
private void takePhoto()
    {
      if (cameraDevice == null)
        return;
      Bitmap bitmap = preview_player.GetCurrentVideoFrame();
      string fullPath = Application.StartupPath + "\\";
      if (!Directory.Exists(fullPath))
        Directory.CreateDirectory(fullPath);
      string img = fullPath + "Aforge.jpg";
      bitmap.Save(img);
      guide_lab.Text = img;
      guide_lab.Visible = true;
    }

備注

1.關閉窗體時需要關閉控件:

private void aforgeForm_FormClosing(object sender, FormClosingEventArgs e)
  {
    preview_player.SignalToStop();
    preview_player.WaitForStop();
  }

2.調(diào)用preview_player.GetCurrentVideoFrame()方法提示沒有該方法

由于使用的Aforge.Controls.dll庫版本過低導致,根據(jù)官方記錄,該方法需要 (in AForge.Controls.dll) Version: 2.2.5.0 (2.2.5.0)版本支持

3.在添加預覽控件videoSourcePlayer時提示沒有可以加入的控件

目前筆者遇到的這個問題比較奇葩,使用AForge.Controls.dll  Version: 2.2.5.0 庫文件添加會報這個錯誤,看過各種解法,比如直接把庫文件拖到工具面板上,還是沒能解決。說奇葩是因為目前親測到的解決方法步驟是:

1).引用那邊先不要添加AForge.Controls.dll文件
2).找到AForge.Controls.dll Version: 2.0.0.0 注意版本號是低版本的。將這個低版本的加入工具面板就可以看到預覽控件videoSourcePlayer。
3).但是,此時代碼里會出現(xiàn)第二個錯誤(調(diào)用preview_player.GetCurrentVideoFrame()方法提示沒有該方法)。原因就不解釋了,解決方法是:在引用里面的AForge.Controls.dll(這個時候可以看下屬性是Version: 2.0.0.0)刪除這個舊版本,添加新的版本的AForge.Controls.dll  Version: 2.2.5.0。
至此,大功告成。可以正常編譯了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#導出網(wǎng)站功能實例代碼講解

    C#導出網(wǎng)站功能實例代碼講解

    這篇文章主要介紹了C#導出網(wǎng)站功能實例代碼,需要的朋友可以參考下
    2015-10-10
  • Winform窗口實現(xiàn)多顯示屏顯示的2種方法

    Winform窗口實現(xiàn)多顯示屏顯示的2種方法

    這篇文章主要介紹了Winform窗口實現(xiàn)多顯示屏顯示的2種方法,本文直接給出了實現(xiàn)代碼,并對其中的一些重要參數(shù)做了解釋,需要的朋友可以參考下
    2015-06-06
  • 詳解C#編程中構造函數(shù)的使用

    詳解C#編程中構造函數(shù)的使用

    這篇文章主要介紹了詳解C#編程中構造函數(shù)的使用,是C#入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • C#自定義簡化cookie類實例

    C#自定義簡化cookie類實例

    這篇文章主要介紹了C#自定義簡化cookie類,實例分析了C#操作cookie的添加、獲取及刪除等操作的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C#做線形圖的方法

    C#做線形圖的方法

    在本篇內(nèi)容中小編給大家總結(jié)了C#怎么做線形圖的教程內(nèi)容,對此有需要的朋友們可以跟著學習下。
    2018-12-12
  • C#去除DataTable重復數(shù)據(jù)的三種方法

    C#去除DataTable重復數(shù)據(jù)的三種方法

    這篇文章主要介紹了C#去除DataTable重復數(shù)據(jù)的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • C#單線程和多線程端口掃描器詳解

    C#單線程和多線程端口掃描器詳解

    這篇文章主要為大家詳細介紹了C#單線程和多線程端口掃描器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • WPF中窗體最大化問題的解決方法

    WPF中窗體最大化問題的解決方法

    這篇文章主要給大家介紹了關于WPF中窗體最大化問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用wpf具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • C# 單元測試全解析

    C# 單元測試全解析

    這篇文章主要介紹了C# 單元測試的相關資料,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • WinForm繪制圓角的方法

    WinForm繪制圓角的方法

    這篇文章主要介紹了WinForm繪制圓角的方法,涉及C#中GraphicsPath模塊的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論