2018年3月2日 星期五

OpenCV 如何編譯 contrib -- 懶人包批次檔

OpenCV 如何編譯 contrib 指令快速編譯批次檔

寫成批次檔可以自動下載,版本變動的時候自行更改即可~


開源

製作過程並沒有什麼技術含量,主要是還是debug時間最多,一堆沒想到的奇爬問題一直出現,把它寫出來給我自己看方便之後維護文章,有興趣的話也可以看看是怎麼實現全自動編譯的。
我的實現目的是只要輸入版本號,就可以自動在windwos上編譯完成。
版本號對應的方式如下
rem 設置 OpenCV 版本
set cv_version=4.0.1

rem 下載Opencv
git clone -b %cv_version% https://github.com/opencv/opencv
git clone -b %cv_version% https://github.com/opencv/opencv_contrib
首先條件要先達成安裝最新版的 cmake 跟 git,尤其是cmake的這個必須跟著opencv升級,否則編譯過程會出錯,升級的話麻煩的,最後我是放棄了搞些什麼辦法了,直接附在安裝包一起省事。
下載的網址個別是:
值得注意的是,有些人的電腦上已經安裝過了,解決辦法是下載攜帶版,直接開攜帶版的exe而不直接在命令內使用 git 或 cmke。
對應的辦法像這樣
rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin

%~dp0%gitPath%\git
%~dp0%cmakePath%\cmake
再來就是讓cmake自動產生make檔案,語法跟linux差不多,長這個樣子
rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"
最後打開 Visutal Studio 來編譯吧~其實這裡有語法,只是沒查到不知道去哪裡找QuQ就算惹,剩最後一部只是按右鍵編譯。
有人知道怎麼操作指令的話~還請留言教一下XD
具體操作是先按 ctrl+shift+b 編譯,編譯完畢之後檔案其實就已經有了。
要輸出到同一個資料夾可以按,左邊 CMakeTargets -> INSTALL 右鍵 然後 按 J 在案B,自動幫你把全部整理到名為 INSTALL 的資料夾。
然後要上面編譯要做兩次,一次是 debug 模式一次是 release 模式,從VS上方選單切換。

批次檔內容

cmake OpenCV contrib_v3.bat
rem @echo off
Title dismInstall By Charlotte.HonG

rem 設置 OpenCV 版本
set cv_version=4.0.1
rem 適用的VS版本[可以用 cmake -G 看到其他選擇]
set mode="Visual Studio 15 2017 Win64"

rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin
path=%path%;%~dp0%gitPath%;%~dp0%cmakePath%

rem 下載Opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv_contrib

rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"

rem  打開 VS
start "" "OpenCV.sln"
CreateList.bat
::@Echo Off
Title CreatList - By:Charlotte.HonG

set FILENAME1="DebugLib_Lists.txt"
set FILENAME2="ReleaseLib_Lists.txt"

set LIBPATH=%~dp0build_contrib\install\x64\vc15\lib
set LISTPATH=%~dp0build_contrib\install\x64\vc15\bin
set INCTPATH=%~dp0build_contrib\install\include\opencv2

::Lib清單
cd %LIBPATH%
dir *d.lib /b /on> %~dp0%FILENAME1%
dir *401.lib /b /on> %~dp0%FILENAME2%

::路徑清單
echo %INCTPATH%> %~dp0%PathList.txt
echo %LIBPATH%>> %~dp0%PathList.txt

exit

沒有留言:

張貼留言