c#_使用emgucv 3.0 操作本地網路攝影機
首先我們要下載emgu3.0,安裝包,[下載地址]http://www.emgu.com/wiki/index.php/Download_And_Installation
安裝完成以後,根據你要所開發的應用的平台,在安裝目錄的bin目錄下選擇x86或者x64 複製裡面的四個dll檔案 : cvextern.dll + msvcp120.dll + msvcr120.dll + opencv_ffmpeg310_64.dll / opencv_ffmpeg310.dll 到應用的開發目錄的bin/debug目錄下,此外將安裝目錄bin目錄下的所有dll檔案添加引用,包括 : cvextern.dll + Emgu.CV.Contrib.dll + Emgu.CV.Cuda.dll + Emgu.CV.dll + Emgu.CV.ML.dll + Emgu.CV.OCR.dll + Emgu.CV.Shape.dll + Emgu.CV.Stitching.dll + Emgu.CV.Superres.dll + Emgu.CV.UI.dll + Emgu.CV.UI.GL.dll + Emgu.CV.VideoStab.dll + Emgu.Util.dll + msvcp120.dll + msvc120.dll+ opencv_ffmpeg300_64.dll;最好是把上面的所有檔案都複製到debug目錄下。
在做好上面的準備工作之後,我們還要進行一個操作。添加imagebox控制項,這個控制項是在Emgu.CV.UI.dll檔案中的,.net平台並沒有提供。添加控制項的步驟如下: 開啟工具箱面板,按右鍵工具箱空白地區,選擇添加選項卡並命名為emgu.ui。
找到Emgu.CV.UI.DLL 檔案 將其拖入我們剛建立的選項卡中,這個時候我們的選項卡裡就會多出幾個控制項,
進入設計檢視,將imagebox 添加到表單中
官方添加控制項教程連結(英文):<連結> http://www.emgu.com/wiki/index.php/Add_ImageBox_Control
添加完控制項,就可以開始寫代碼了。
using Emgu.CV;using System;using System.Windows.Forms;namespace RecognizeFace{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Capture cap; private bool isProcess = false; void button1_Click(object sender, EventArgs e) { if (cap != null) { if (isProcess) { Application.Idle -= new EventHandler(ProcessFram); button1.Text = "stop!"; } else { Application.Idle += new EventHandler(ProcessFram); button1.Text = "start!"; } isProcess = !isProcess; } else { try { cap = new Emgu.CV.Capture(); } catch (NullReferenceException expt) { MessageBox.Show(expt.Message); } } } private void ProcessFram(object sender, EventArgs arg) { imageBox1.Image = cap.QueryFrame(); } }}
代碼很簡單,主要是配置問題。代碼就不細說了。
異常 : 如果在啟動並執行時候出現了異常:“Emgu.CV.CvInvoke”的類型初始值設定項引發異常。” 就我現在知道的,可能是因為沒有將cvextern.dll + msvcp120.dll + msvcr120.dll + opencv_ffmpeg310_64.dll / opencv_ffmpeg310.dll 這四個dll檔案添加到debug目錄下。