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

C#調用攝像頭實現拍照功能的示例代碼

 更新時間:2020年09月20日 11:11:25   作者:svq18656  
這篇文章主要介紹了C#調用攝像頭實現拍照功能的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

老師要求我們學生做一套拍照身份驗證系統,經過長時間的學習,有了這篇文章,希望能幫到讀者們。

正文

首先介紹本文的主角:AForge
創(chuàng)建一個C#項目,引用必備的幾個DLL

  • AForge.dll
  • AForge.Controls.dll
  • AForge.Imaging.dll
  • AForge.Math.dll
  • AForge.Video.DirectShow.dll
  • AForge.Video.dll

這些DLL讀者們可以在文末下載我附帶的Demon

引用必要的命名空間

using AForge.Controls;
using AForge.Video;
using AForge.Video.DirectShow;

至此,便可以開始編寫代碼了。

首先遍歷操作系統上的攝像頭控件:

public static bool GetDevices()
    {
      try
      {
        //枚舉所有視頻輸入設備
        videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        if (videoDevices.Count != 0)
        {
          Console.WriteLine("已找到視頻設備.");
          return true;
        }

        return false;
      }
      catch (Exception ex)
      {
        Console.WriteLine("error:沒有找到視頻設備!具體原因:" + ex.Message);
        return false;
      }

    }

找到控件后就可以初始化攝像頭:

private static void CameraConn()
    {
      videoSource = new VideoCaptureDevice(videoDevices[selectedDeviceIndex].MonikerString);
      vid.VideoSource = videoSource;
      vid.Start();
    }

但是這里為止,都只是攝像拍攝,如果需要拍照,則需要通過eventArgs.Frame.Clone()截取視頻中的某一幀圖像
這里就需要通過事件來處理:

public static void GrabBitmap()
    {
      if (videoSource == null)
      {
        return;
      }
      videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame); //新建事件
    }

    static void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
      Bitmap bmp = (Bitmap)eventArgs.Frame.Clone();  //Clone攝像頭中的一幀
      bmp.Save(path, ImageFormat.Png);
      videoSource.NewFrame -= new NewFrameEventHandler(videoSource_NewFrame);    //如果這里不寫這個,一會兒會不停的拍照,
    }

代碼中的path變量就是圖片保存的位置,讀者們可以自行設置路徑。我這里默認是用戶桌面下的Temp.png文件

測試代碼下載地址:https://gitee.com/GiveCVE/csharp_camera/raw/master/OpenCamera.zip

到此這篇關于C#調用攝像頭實現拍照功能的示例代碼的文章就介紹到這了,更多相關C#調用攝像頭拍照內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#使用round函數四舍五入的方法

    C#使用round函數四舍五入的方法

    這篇文章主要介紹了C#使用round函數四舍五入的方法,實例分析了C#中round函數的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C# Form自定義光標的簡單實現

    C# Form自定義光標的簡單實現

    這篇文章主要介紹了C# Form自定義光標的簡單實現,有需要的朋友可以參考一下
    2014-01-01
  • C# 中使用正則表達式匹配字符的含義

    C# 中使用正則表達式匹配字符的含義

    正則表達式的作用用來描述字符串的特征。本文重點給大家介紹C# 中使用正則表達式匹配字符的含義,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • c# 怎樣簡潔高效的實現多個 Enum 自由轉換

    c# 怎樣簡潔高效的實現多個 Enum 自由轉換

    這篇文章主要介紹了c# 怎樣簡潔高效的實現多個 Enum 自由轉換,幫助大家更好的進行c# 開發(fā),感興趣的朋友可以了解下
    2020-10-10
  • C#基礎語法:結構和類區(qū)別詳解

    C#基礎語法:結構和類區(qū)別詳解

    這篇文章主要介紹了C#基礎語法:結構和類詳解,本文總結了一些結構和類的不同之處并給出了測試區(qū)別特性代碼,需要的朋友可以參考下
    2015-06-06
  • C#不重復輸出一個數組中所有元素的方法

    C#不重復輸出一個數組中所有元素的方法

    這篇文章主要介紹了C#不重復輸出一個數組中所有元素的方法,涉及C#針對數組的遍歷、校驗及排序等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#條件編譯、內聯函數、CLS介紹

    C#條件編譯、內聯函數、CLS介紹

    這篇文章介紹了C#的條件編譯、內聯函數、CLS,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#實現讀取匿名對象屬性值的方法示例總結

    C#實現讀取匿名對象屬性值的方法示例總結

    這篇文章主要介紹了C#實現讀取匿名對象屬性值的方法,結合實例形式總結分析了C#通過反射、轉換等方法讀取匿名對象屬性值的相關操作技巧,需要的朋友可以參考下
    2020-03-03
  • Unity實現批量Build打包詳解

    Unity實現批量Build打包詳解

    一般來講如果項目是PC或Android、IOS端不會有批量Build打包這樣的需求,但如果項目是WebGL端可能會遇到這樣的需求。本文主要為大家介紹Unity中如何實現Build批量打包的,需要的朋友可以參考一下
    2021-12-12
  • C#讀取數據庫返回泛型集合詳解(DataSetToList)

    C#讀取數據庫返回泛型集合詳解(DataSetToList)

    本篇文章主要是對C#讀取數據庫返回泛型集合(DataSetToList)進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論