Ubuntu系統中安裝OpenCV 4
前面我們已經介紹瞭如何在Windows系統中安裝OpenCV 4。雖然本書中程式程式碼主要在Windows執行,但是相信有一些讀者使用Ubuntu系統進行計算機視覺的學習,因此本小節將介紹如何在Ubuntu系統中安裝OpenCV 4.1。如果你僅僅是在Windows系統中使用OpenCV 4.1,可以跳過本小節內容。對於Ubuntu版本的介紹這裡不做過多的說明,感興趣讀者可以自行查詢相關內容,筆者使用的是Ubuntu 16.04,因此將會介紹如何在該系統中安裝OpenCV 4.1。可能有讀者使用Ubuntu 14.04或者Ubuntu 18.04,不過安裝OpenCV 4.0的方法和步驟都是相似的。
01 安裝OpenCV 4.1需要的依賴項
由於最新版的OpenCV 4.1需要CMake 3.5.1版本,因此需要保證電腦中安裝的CMake編譯器版本高於3.5.1。可以透過程式碼清單1-2中的命令安裝最新版CMake。
程式碼清單1-2 安裝最新版CMake命令1. sudo apt-get update2. sudo apt-get upgrade3. sudo apt-get install build-essential cmake
其中安裝“update”和“upgrade”分別是更新軟體源和檢視是否有軟體需要更新,這兩個命令一般用於安裝系統後初次下載軟體,或者更換源之後執行,可以根據實際情況不輸入該命令。安裝的“build-essential”是Linux系統中常用的一些編譯工具,“cmake”會直接安裝最新版CMake編譯器。
OpenCV 4.0的使用會需要很多的依賴項,例如圖片編碼庫、影片編碼庫等。不過這些依賴是針對某些特定的功能,即使某些功能的依賴項沒有安裝,也不會影響OpenCV 4.1的編譯與使用,只是在使用特定功能時會出現問題。因此在不確定某型功能以後會不會用到時,建議將常用的依賴都安裝上,可以透過程式碼清單1-3中的命令進行安裝。
程式碼清單1-3 安裝OpenCV依賴1. sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev
如果需要結合Python使用OpenCV 4.1,需要安裝Python開發庫。如果沒有安裝,則無法生成Python的連結。Python開發庫有Python 2.7和Python 3.5兩個版本,如果能確定不使用某一版本,可以不用安裝對應版本的開發庫,可以透過程式碼清單1-4中的命令進行安裝。
程式碼清單1-4 安裝Python依賴1. sudo apt-get install python2.7-dev python3.5-dev
02 編譯和安裝OpenCV 4.1
安裝完成所有依賴項之後,就可以進行OpenCV 4.1的編譯與安裝。由於Ubuntu系統中需要透過編譯安裝OpenCV,因此需要在圖1 中OpenCV 4.1版本安裝包下載區域中選擇Sources選項,下載用於Ubuntu系統安裝的OpenCV 4.1檔案,下載後解壓到待安裝路徑。待安裝路徑可以根據個人喜好自由設定,為了安裝方便,筆者將OpenCV 4.1解壓在根目錄下,並命名為“opencv4.1”。
提示
這個路徑在後續編譯時需要用,建議放置在根目錄或者第二層資料夾等比較淺的路徑中,命名也儘量簡潔。
利用“Ctrl+Alt+T”組合按鍵喚起終端,透過終端進入到下載的OpenCV 4.1的檔案中,並建立名為“build”的資料夾,之後進入該資料夾中,準備進行編譯和安裝。這一些列操作可以透過如下命令實現。
程式碼清單1-5 在OpenCV 4.0資料夾中建立build檔案命令1. cd opencv4.12. mkdir build3. cd build
程式碼中的“cd”是開啟或進入到某個資料夾的命令,後面接需要開啟的資料夾。“mkdir”是建立資料夾的命令,後面接需要建立的資料夾的名字。建立一個新的資料夾的目的是為了接下來編譯的時候將編譯出的中間檔案都生成在這個新的資料夾中,這樣做不會因為編譯過程中生成的檔案將原資料夾中的內容變得混亂,這種方式在Ubuntu系統中非常常見。
接下來開始編譯工作,編譯安裝命令如程式碼清單1-6所示。
程式碼清單1-6 編譯OpenCV命令1. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..2. sudo make -j43. sudo make install
命令中“CMAKE_BUILD_TYPE”是編譯的模式引數,“CMAKE_INSTALL_PREFIX”是安裝路徑引數。這些引數都可以預設,但是如果在安裝多個版本的OpenCV時,設定不同的安裝路徑將變得十分有必要。第一行命令的最後一定不要忘記有一個“..”指令,其含義是告訴編譯器將要編譯的檔案是來自上一層資料夾中的CMakeList.txt檔案。第二行命令是完成最終的編譯,“-j4”的意思是啟用4個執行緒同時進行編譯,可以根據自己計算機的效能自主選擇,例如,啟用8個執行緒“-j8”,只用單執行緒可以預設。之後根據計算機效能不同,將會是一個漫長的等待編譯完成的過程。在編譯完成後,用程式碼清單1-6中第3行程式碼安裝OpenCV 4.1。
03 環境配置
安裝OpenCV 4.1之後還需要透過配置環境告訴系統安裝的OpenCV 4.1在哪裡,按照如下步驟操作即可完成環境配置,所有的命令在程式碼清單1-7中給出。
首先執行程式碼清單1-7中第1行命令,可能會開啟一個空白的檔案,但是無論是否為空白檔案,都需要在末尾新增路徑“/usr/local/lib”。這裡新增內容與我們編譯時設定的路徑有關,如果安裝路徑變化,這裡新增的內容也要隨之改變。儲存檔案並退出後,使用程式碼清單1-7中第2行命令將配置路徑生效。
接下來需要配置bash,在終端透過程式碼清單1-7中第3行命令開啟bash.bashrc檔案,在開啟的檔案末尾加上OpenCV 4.1的安裝路徑,程式碼如程式碼清單1-7中第4行和第5行所示。這裡需要重點說明的是,檔案路徑需要與設定的安裝路徑相對應。儲存輸入內容後,透過程式碼清單1-7中第6行和第7行命令更新系統的配置環境,最終完成了OpenCV 4.1的安裝。
程式碼清單1-7 Ubuntu系統中配置OpenCV 4.0環境1. sudo gedit /etc/ld.so.conf.d/opencv.conf2. sudo ldconfig3. sudo gedit /etc/bash.bashrc4. PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig5. export PKG_CONFIG_PATH6. source /etc/bash.bashrc7. sudo updatedb
04 驗證OpenCV 4.1是否安裝成功
透過上述過程安裝了OpenCV 4.1,但是仍需要驗證是否安裝成功、能否透過程式呼叫OpenCV 4.1函式庫中的函式。首先我們需要建立一個資料夾,在資料夾中建立 “CMakeList.txt”檔案和“main.cpp”檔案兩個檔案,並在資料夾中複製一張名為“apple.jpg”的圖片。
在“CMakeList.txt”檔案中內容如程式碼清單1-8所示。
程式碼清單1-8 測試工程中CMakeList.txt程式1. cmake_minimum_required(VERSION 2.6)2. #建立工程3. project(testopencv)4. #C++版本為115. set(CMAKE_CXX_FLAGS "-std=c++11")6. 7. find_package(OpenCV 4.1.0 REQUIRED) #找OpenCV 4.0安裝路徑8. include_directories(${OpenCV_INCLUDE_DIRS}) #載入OpenCV 4.0的標頭檔案9. 10. add_executable(testopencv main.cpp) #將程式生成可執行檔案11. target_link_libraries(testopencv ${OpenCV_LIBS}) #連結lib檔案到可執行檔案中
注意:
由於OpenCV 4.1庫基於C++11標準編寫,因此必須在“CMakeList.txt”檔案中宣告set(CMAKE_CXX_FLAGS "-std=c++11")
在“main.cpp”檔案中輸入程式如程式碼清單1-9所示。
程式碼清單1-9 install_test.cpp測試工程中主函式程式碼1. #include <iostream>2. #include <opencv2/opencv.hpp>3. 4. using namespace std;5. using namespace cv; //宣告使用OpenCV 4.1的名稱空間6. 7. int main(int agrc, char** agrv){8. Mat img=imread("apple.jpg");9. imshow("test",img);10. waitKey(0);11. return 0;12. }
程式內容與功能前文已經介紹,這裡不再重複介紹。透過終端進入到資料夾,用程式碼清單1-10中的命令編譯程式碼,生成可執行檔案。執行命令後文件夾中會多出很多檔案,其中會有一個名為testopencv的可執行檔案,執行該檔案,可以得到圖1-16結果,證明安裝OpenCV 4.1成功。
程式碼清單1-10 編譯專案命令1. cmake .2. make
注意:
這裡需要注意,編譯當前路徑檔案cmake後面只有一個“.”
圖1-16 執行程式後顯示的apple.jpg圖片