close

C++版本在這  → [openvino-5] OpenCV Project using Intel IE( C++ )

C# openCV套件我用過的有兩套

EmguCV and opencvsharp3

之前我是透過Visual Studio的Nuget Package Manager下載

不過現在我要用的EmguCV需要support intel inference engine 

所以還是自己載一包EmguCV的source code來build

 

   下載Emgu Source code

一開始我從這https://github.com/emgucv/emgucv

選Download ZIP的方式把source code 載下來

但這種方式載下來的code不完整

比如opencv_contrib底下空空如也

但在github上 那底下是有檔案的

code不完整的話會造成之後的步驟產生build error 

因為某些檔案找不到

 

所以改用以下指令載Source Code

1. git clone https://github.com/emgucv/emgucv emgucv 
2. cd emgucv
3. git submodule update --init --recursive

(這步會有點久 我連手機熱點等了差不多半小時才結束)

 

   Added option to build Emgu CV with Intel OpenVINO.

https://github.com/emgucv/emgucv/tree/master/platforms/windows

裡面的說明顯示 Build_Binary_x86-64_intel_inf_icl_doc.bat

的功能是Added option to build Emgu CV with Intel OpenVINO

所以我直接拿來用

build出來的dll塞到程式裡面

(程式裡指定backend為Intel's Deep Learning Inference Engine)

會有haveInfEngine()的錯誤

這感覺就是build出來的dll 裡面沒有包含到Inference Engine

 

以下是碎碎念可以跳過

試了很多方法都有一樣的Error

每試一個方法就要重build一次

每次重build又超久 build掉了幾個工作天

 

最後我只好看進去這一支Build_Binary_x86-64_intel_inf_icl_doc.bat

搭配[openvino-5] OpenCV Project using Intel IE( C++ ) 的流程

看到底是怎麼一回事

 

上面那個bat的內容只有一行

CALL Build_Binary_x86.bat 64 nogpu intel_inf no-openni doc

所以癥結點應該是出在Build_Binary_x86.bat 這支batch

 

我看到這段

IF EXIST "%OPENVINO_DIR%" IF "%OS_MODE%"==" Win64" IF "%3%"=="intel_inf" GOTO WITH_OPENVINO

GOTO WITHOUT_OPENVINO

:WITH_OPENVINO
SET CMAKE_CONF_FLAGS=^
-DWITH_INF_ENGINE:BOOL=TRUE ^
-DINF_ENGINE_INCLUDE_DIRS="%OPENVINO_DIR:\=/%/deployment_tools/inference_engine/include" ^
-DINF_ENGINE_LIB_DIRS="%OPENVINO_DIR:\=/%/deployment_tools/inference_engine/lib/intel64" ^
-DENABLE_CXX11=ON ^

 

簡單來說

要符合第一行的IF條件式才會進入WITH_OPENVINO這段

但batch設定OPENVINO_DIR的程式碼被comment out了 

像這樣→ REM SET OPENVINO_DIR=

所以這個batch只會執行WITHOUT_OPENVINO那段

 

我真的是幹到最高點

難怪怎麼build都解不掉

 

總之最後

Build_Binary_x86.bat 要加兩個東西

1.你安裝的OpenVino位置

2.Inference Engine Dir 。要用引號包住,否則之後build emgucv.sln的時候會有error


加完之後執行Build_Binary_x86-64_intel_inf_icl_doc.bat

會產生一個 b 資料夾,裏頭有emgucv.sln

release build裡面的cvextern project

 

 

build的時間會很久 約莫15分鐘以上

build完後若看到以下Error  

MSB3073    The command "setlocal

就在cvextern上按右鍵→properties→Build Events→Post-Build Event

→Use In Build 改成No → 重build cvextern

C:\Users\Gary\emgucv\libs\x64\ 底下會有這些dll

把這些dll "直接"Add到c# project裡

該死的haveInfEngine()解掉了 耶比

 

 

 

 

---------------------------------------------------------------
參考資料

 ✓ EMGU Download And Installation

(我用的作業系統是win10)
從Windows底下的Building from Git 開始看

 ✓ error MSB3073

arrow
arrow
    全站熱搜

    iam9527 發表在 痞客邦 留言(0) 人氣()