官术网_书友最值得收藏!

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所示。

img

圖1.18

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

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

保存文件,重啟機器,執行cmake -version命令,可以查看CMake軟件的安裝版本,并以此驗證安裝是否成功。

上述編譯環境安裝完成后,即可開始編譯OpenCV源碼,生成庫文件,主要包括以下4步。

第1步,下載源碼:

為了保持與Windows平臺一致,本案例下載的是4.5.2版本的源碼,下載之后放置到合適的位置,并解壓。

第2步,源碼編譯。

在進行源碼編譯之前,需要先安裝OpenCV編譯需要的環境:

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

img

圖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所示。

img

圖1.20

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

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

img

圖1.21

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

img

圖1.22

其中,libopencv_world.so與libopencv_world.so.4.5兩個文件為軟鏈接,讀者可以使用這里的libopencv_world.so的庫文件和頭文件進行鏈接調用。

另外,讀者還可以執行如下命令在本機安裝OpenCV編譯結果:

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

img

圖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所示。

img

圖1.24

執行后,圖像能夠正常顯示,表明Linux OpenCV C++語言開發環境搭建完成。

主站蜘蛛池模板: 修水县| 博白县| 沈丘县| 邹平县| 天津市| 西贡区| 龙南县| 门头沟区| 忻州市| 海丰县| 凌源市| 金川县| 碌曲县| 莆田市| 临清市| 澄江县| 清苑县| 武宁县| 绵竹市| 陇西县| 娄烦县| 政和县| 山东省| 巴东县| 鄂州市| 六安市| 庄河市| 澳门| 青浦区| 庄河市| 达拉特旗| 连江县| 吐鲁番市| 巫溪县| 平度市| 综艺| 施甸县| 武平县| 赤水市| 桦川县| 奉化市|