1. 程式人生 > >Win10(64bit)+Emgu CV3.0.0+VS2013 下載&安裝&配置

Win10(64bit)+Emgu CV3.0.0+VS2013 下載&安裝&配置

1.描述

Emgu CV是OpenCV影象處理庫在跨平臺.Net下的封裝。允許用.Net相容語言來呼叫 OpenCV函式,如C#、VB、VC++、IronPython等。同時該封裝可以在Mono平臺編譯並且允許在Windows,Linux,Mac OS X,iPhone,iPad和Android裝置上執行。

2.下載Emgu CV

官網下載: https://sourceforge.net/projects/emgucv/
本文使用的版本:emgucv-windows-universal 3.0.0.2157
下載地址: http://pan.baidu.com/s/1slaifO5  密碼:iqsv  ( 取自參考博文作者的網盤連結

3.安裝Emgu CV

將Emgu CV解壓到一個磁碟下(不建議C盤,裝在D盤下比較好)。

4.配置Emgu CV

類似opencv3.0.0的配置,開啟我的電腦->系統屬性。


選擇“高階系統設定”。



選擇“環境變數”。



在“系統變數”中選擇“path”項,點選“編輯”按鈕。



在“編輯環境變數”對話方塊中,選擇“新建”,在編輯框中輸入任意路徑,如“111”,然後選擇“瀏覽”找到路徑D:\EmguCv3.0\emgucv-windows-universal 3.0.0.2157\bin\x64(這裡我的EmguCv檔案放在D盤中,其他位置也可以,而且這裡配置的是64位的,如果你要配置32位的,可以選擇D:\EmguCv3.0\emgucv-windows-universal 3.0.0.2157\bin\x86)。



5.配置VS

step1:開啟VS2013,新建一個C#窗體應用程式。解決方案、專案名稱定為“CameraCapture”。

step2:給專案檔案新增引用。在專案檔案“CameraCapture”的“reference”上右鍵,彈出選單專案,點選“Add Reference”,進入“引用管理器”對話方塊。



在“引用管理器”中,選則“Browse->Browse..”瀏覽引用檔案。



選擇3個常用dll檔案,點選“Add”新增到“引用管理器”。



在“應用管理器”中勾選三個dll檔案,點選“OK”新增到“reference”下。




step3:新增Emgu Cv工具。TOOLS->Choose Toolbox Items(這是英文版VS,和中文版差不多)


在“Choose Toolbox Items”對話方塊中選擇“Browse”進入瀏覽對話方塊。


進入EmguCv所在的bin資料夾下,找到圖中的檔案,選中開啟。



在“Choose Toolbox Items”對話方塊中出現四個工具項HistogramBox、ImageBox、MatrixBox、PanAndZoomPictureBox,勾選這四個工具項。點選“OK”。



選擇“View->Toolbox”,快捷鍵Ctrl+Alt+X,開啟“工具欄”。



在“Toolbox”中,我們可以看到general中出現四個工具項。如果沒有這些工具,你要檢查一下當前狀態是不是處於對話方塊design狀態,如果不是,選擇“solution->Form1.cs”。在“Toolbox”中,在搜尋欄中,搜尋一下,看看這四個工具項是否存在。



這裡需要新增兩個工具項“Button”和“ImageBox”,找到相應的工具項,拖到對話方塊設計檢視中或雙擊均可。
適當調整介面設計大小。

選中圖片框imageBox1,在相應的屬性表中,修改如下資訊:
(Name):CamImageBox

BorderStyle:Fixedsingle



選中按鈕框button1,在相應的屬性表中,修改如下資訊:
(Name):btnStart
Text:Start!


選中主對話方塊From1,在解決方案中,重新命名“Form1.cs”為“CameraCapture.cs”,在屬性表中修改Text中內容“From1”為“Camera Output”


儲存所有修改,debug得到最終的對話方塊。


step4:程式設計。

在“CameraCapture.cs”中新增引用檔名稱。

using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;


在“CameraCapture”類中新增全域性變數。
//declaring global variables
private Capture capture; //takes images from camera as image frames
private bool captureInProgress; // checks if capture is executing


新增函式“ProcessFrame”。
private void ProcessFrame(object sender, EventArgs arg)
{
  Image<Bgr, Byte> ImageFrame = capture.QueryFrame();
  CamImageBox.Image = ImageFrame;
}


在設計對話方塊中,選擇按鈕框Start!,在“CameraCapture.cs”新增函式“btnStart_Click”,在函式中新增語句:
#region if capture is not created, create it now
if (capture == null)
{
  try
  {
   capture = new Capture();
  }
  catch (NullReferenceException excpt)
  {
   MessageBox.Show(excpt.Message);
  }
}
#endregion
if (capture != null)
{
  if (captureInProgress)
  {
   //if camera is getting frames then stop the capture and set button Text
   // "Start" for resuming capture
   btnStart.Text = "Start!"; //
   Application.Idle -= ProcessFrame;
  }
  else
  {
   //if camera is NOT getting frames then start the capture and set button
   // Text to "Stop" for pausing capture
   btnStart.Text = "Stop";
   Application.Idle += ProcessFrame;
  }
  captureInProgress = !captureInProgress;
}
接著,新增函式“ReleaseData”。
private void ReleaseData()
{
  if (capture != null)
     capture.Dispose();
}

儲存,編譯,執行。

點選按鈕“Start!”後,彈出如下錯誤。



可能是配置問題,在“Configuration Manager”配置管理器中,將所有的“platform”平臺換為x64,再編譯執行。

如果,問題仍然存在。 需要將“D:\EmguCv3.0\emgucv-windows-universal 3.0.0.2157\bin\x64”下的四個dll檔案複製到“...\CameraCapture\CameraCapture\bin\x64\Debug”下,重新編譯執行。 正確的執行結果。配置結束。

工程檔案下載地址: http://download.csdn.net/detail/mingjieshendu/9873932 參考資料: [1] https://stackoverflow.com/questions/31226020/emgucv-capture-error-cannot-implicitly-convert-type-emgu-cv-mat-to-emgu-cv-i [2] http://blog.csdn.net/u012343179/article/details/51906338 [3] http://www.cnblogs.com/bomo/archive/2013/03/28/2986113.html