OpenCV學習筆記--下載和安裝
資源
從官網、GitHub、Sourceforge我們均能下載到OpenCV的原始碼。
安裝
下面介紹幾種常見的安裝:
使用VS2015
直接在官網http://opencv.org/releases.html上可以下載到生成好的安裝包。
以windows為例,下載win pack,最新版本是opencv-3.2.0-vc14.exe(即OpenCV3.2+VS2015開發
)。下載完成後直接執行即可,在build子目錄下可以找到所需的標頭檔案opencv.hpp,匯入庫檔案opencv_world320.lib,動態連結庫opencv_world320.dll。不過用從下圖的depends依賴中可以發現是需要VS2015開發環境的,大家可以從微軟的官網或各種資源網上下載到完全免費的VS社群版(微軟早該擁抱開源了
使用MinGW
MinGW是Minimalist GNU on Windows的縮寫,是在windows上實現了linux的標頭檔案包含的介面功能,方便使用GNU工具開發程式,包括gcc、gdb、make。另外cygwin也是在windows上模擬linux開發環境,但是體積比較龐大。MinGW突出一個Min小的意思。可以到MinGW官網http://www.mingw.org/上下載最新的版本。
因為我之前基於QT開發介面已經安裝了QT5,所以已經附帶了MinGW工具包,可在QT的安裝目錄下搜尋gcc.exe定位到MinGW所在目錄。例如我電腦上的是D:\Qt\Qt5.7.0\Tools\mingw530_32\bin\gcc.exe。
此外自定義編譯OpenCV還需要一樣工具就是CMake。CMake是”cross platform make”的縮寫,是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project檔案,能測試編譯器所支援的C++特性,類似UNIX下的automake。CMake 的組態檔取名為 CmakeLists.txt。Cmake 並不直接建構出最終的軟體,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然後再依一般的建構方式使用。可以到CMake官網
準備工作如下:
- 下載OpenCV3最新原始碼:git clone https://github.com/opencv/opencv.git
- 下載MinGW工具包,並將bin目錄新增到環境變數path中
- 下載CMake工具包
編譯步驟如下:
1、執行cmake-gui.exe,設定原始碼目錄(下文用OPENCV_SRC表示
)和生成目錄(下文用OPENCV_BUILD表示
)
2、勾選上Grouped、Advanced,單擊Configure按鈕,選擇MinGW makefiles,勾選Specify native compilers,如下圖所示:
3、設定C、C++編譯器,如下所示:
4、點選Finish按鈕後,開始配置,配置完成後如下圖所示:
5、選擇需要編譯的模組,一般預設即可,有一個有用的選項是在BUILD下BUILD_opencv_world選項,能夠將所有的庫整合到一個opencv_world中,省去了使用時新增許多模組庫的麻煩。選中了這項後,編譯OPENCV不再會生成core,highgui等等這些單獨的庫對應的lib及dll檔案。
6、單擊Generate生成makefile檔案,完成後如下圖所示,並且在OPENCV_BUILD目錄下可以看到已經生成了Makefile檔案
7、開啟cmd命令提示符,cd到OPENCV_BUILD目錄(即Makefile檔案所在目錄
),輸入mingw32-make命令,開始編譯
編譯需要花費半小時左右,沒有錯誤編譯完成如下圖:
到OPENCV_BUILD/bin目錄可以發現已經生成了所需的libopencv_world320.dll以及lib目錄下的libopencv_world320.dll.a。如果之前沒有勾選BUILD_opencv_world選項,則會生成下面的各個分模組:
(這是沒有設定BUILD_opencv_world選項生成的
)
8、輸入mingw32-make install命令,開始安裝
安裝後在OPENCV_BUILD/bin目錄下會生成一個install目錄,裡面包含了整合的標頭檔案、匯入庫檔案、動態庫檔案。
9、我這裡直接將編譯生成好的OpenCV庫上傳到我的資源中,編不過的小夥伴可以前往下載http://download.csdn.net/detail/gg_simida/9835576,裡面包含了可用於VS2015開發或者使用MinGW(例如QT)進行開發的生成庫。
另外如果有小夥伴迷路的,歡迎到評論區留言,樂意一起探討解決。