- 學習OpenCV 4:基于Python的算法實戰
- 肖鈴
- 1184字
- 2022-05-05 19:40:04
1.2.2 案例2:Linux動態庫開發環境搭建
OpenCV Releases中沒有提供Linux下的安裝包,因此需要讀者在Linux系統下編譯生成Linux的庫文件。
本案例使用的Linux系統為Ubuntu16.04,已經在虛擬機中進行了安裝,系統中已經有gcc、g++和Make等工具。另外,還需要安裝CMake軟件。
對于CMake軟件,可以選擇源碼進行安裝,也可以選擇下載安裝包進行安裝,本案例直接下載安裝包進行安裝。
讀者可以去CMake官網下載安裝包,在“Download”中選擇“Binary distributions”(二進制發布)選項,下載Linux x86_64,如圖1.18所示。

圖1.18
下載之后選擇合適的安裝位置并解壓:

然后將cmake添加到環境變量中,方法是打開etc/profile,在最后添加CMake軟件安裝路徑:

保存文件,重啟機器,執行cmake -version命令,可以查看CMake軟件的安裝版本,并以此驗證安裝是否成功。
上述編譯環境安裝完成后,即可開始編譯OpenCV源碼,生成庫文件,主要包括以下4步。
第1步,下載源碼:

為了保持與Windows平臺一致,本案例下載的是4.5.2版本的源碼,下載之后放置到合適的位置,并解壓。
第2步,源碼編譯。
在進行源碼編譯之前,需要先安裝OpenCV編譯需要的環境:

讀者可以在源碼目錄下新建文件夾build,如圖1.19所示。

圖1.19
此時build文件夾與CMake編譯腳本文件CMakeLists.txt文件處于同級目錄,進入build文件夾,并右鍵選擇打開終端(Open Terminal),使用cmake命令生成項目文件:

編譯選項說明如下。
● -D BUILD_opencv_world=ON:用于打開opencv_world編譯開關,生成opencv_world的鏈接庫。
● -D OPENCV_GENERATE_PKGCONFIG=YES:用于生成配置文件opencv4.pc,OpenCV 4.x默認不生成opencv4.pc文件。
cmake執行完成后,會有“Configuring done"和“Generating done”的打印信息,如圖1.20所示。

圖1.20
在打印信息中,會詳細說明生成的項目文件的情況,如所需編譯的OpenCV模塊信息:


在build目錄下會生成項目工程文件MakeFile,進入build目錄,使用make命令進行項目編譯,如圖1.21所示。

圖1.21
make編譯成功之后,會在build的子文件夾lib中生成二進制庫文件,如圖1.22所示。

圖1.22
其中,libopencv_world.so與libopencv_world.so.4.5兩個文件為軟鏈接,讀者可以使用這里的libopencv_world.so的庫文件和頭文件進行鏈接調用。
另外,讀者還可以執行如下命令在本機安裝OpenCV編譯結果:

上述命令執行后即可在本機上安裝OpenCV,庫文件和頭文件被分別安裝在/usr/local/lib和/usr/local/include路徑下,如圖1.23所示。

圖1.23
圖1.23中的include文件夾下對應的頭文件為opencv4,opencv4中才是常用的OpenCV的頭文件的文件夾opencv2,因此,讀者需要手動將其復制出來放到外層,便于引用;否則需要在包含路徑中多一層opencv4路徑:

第3步,環境配置。
環境配置包括以下兩方面內容。
● 配置動態鏈接庫加載路徑。
打開/etc/ld.so.conf,在其中加上OpenCV動態鏈接庫的路徑:

● 環境變量配置。
在/etc/bash.bashrc文件之后加上環境變量PKG_CONFIG_PATH的配置:

這樣就真正完成了OpenCV的安裝,并完成了環境配置。
第4步,代碼測試。
在Ubuntu機器上安裝OpenCV 4之后,讀者可以編寫測試程序以測試安裝是否成功,本案例使用讀取圖像并顯示來測試。
新建C++文件,命名為OpenCVTestDemo.cpp,并編寫如下讀取圖像并顯示的代碼:

執行如下的代碼編譯命令:

執行后生成可執行文件,讀者也可以編寫CMake腳本,保存為CMakeLists.txt:


對于上述編譯腳本,執行如下編譯命令:

編譯完成后,生成可執行文件OpenCVTestDemo,執行該文件:

執行結果如圖1.24所示。

圖1.24
執行后,圖像能夠正常顯示,表明Linux OpenCV C++語言開發環境搭建完成。
- 數字媒體應用教程
- Node.js Design Patterns
- Visual Basic程序設計教程
- Web全棧工程師的自我修養
- Expert Android Programming
- MySQL數據庫基礎實例教程(微課版)
- Reactive Android Programming
- R語言與網絡輿情處理
- PHP+MySQL+Dreamweaver動態網站開發從入門到精通(第3版)
- Unity 2017 Mobile Game Development
- 從零開始學C#
- Django 3.0應用開發詳解
- The Statistics and Calculus with Python Workshop
- Java Web開發基礎與案例教程
- Java核心技術速學版(第3版)