ubuntu16.04環境下opencv3.4.8 源碼編譯安裝

最近空閒時間比較多,打算仔細看看opencv的源碼,做個筆記。

opencv的安裝一般分爲兩種方式:

  1. 安裝包直接安裝
  2. 源碼編譯安裝

命令行安裝較爲簡單,本文主要介紹使用cmake進行源碼編譯安裝。
因爲使用的遠程服務器,所有操作沒有可視化界面,都是在終端命令行。

目錄

1、CMake安裝

CMake工具是opencv官方推薦的源碼編譯工具。安裝教程

查看cmake版本號
在這裏插入圖片描述

2、opencv3.4.8 源碼下載

github選擇需要的版本下載,鏈接
在這裏插入圖片描述

3、源碼編譯流程

(1)configure/cmake

用來檢測安裝平臺的目標特徵,比如檢測你是不是安裝有GCC等,並不會實際進行編譯。
通常一個大型項目的Makefile文件是十分複雜的,寫Makefile非常麻煩,所以開發出了一種CMake工具,它能夠輸出各種各樣的makefile或者project文件,從而幫助程序員減輕負擔。但是隨之而來也就是編寫cmakelist文件,它是cmake所依據的規則。
make和cmake的區別
在這裏插入圖片描述

(2)make

make用來編譯的,它是一個自動化編譯工具。從Makefile文件中讀取指令,然後根據設置的編譯選項進行編譯。

(3)make install

用來安裝的,也是從Makefile文件中讀取指令,安裝到指定的位置。

4、opencv源碼編譯

cd opencv-3.4.8
mkdir build
cd build 
cmake ..      // configure 配置 
make -j8      // make  編譯
sudo make install  // make install 安裝

4.1 編譯出現錯誤

錯誤如下:
在這裏插入圖片描述在這裏插入圖片描述

這種錯誤的根本原因:
configure時沒有支持OpenGL,編譯opencv庫時用到了OpenGL中的變量。所以導致出錯。
可以通過添加

-D WITH_OPENGL=ON

解決這個問題。
但是又出現了,如下問題
在這裏插入圖片描述
如錯誤提示,添加

-D WITH_QT=ON

最後的configure命令可以寫成

 cmake -D WITH_QT=ON -D WITH_OPENGL=ON ..

也可以寫成下面,方便理解

cmake -D CMAKE_BUILD_TYPE=RELEASE \    #編譯模式,release/debug, 默認爲release
	  -D CMAKE_INSTALL_PREFIX=/usr/local \ #安裝路徑
	  -D WITH_TBB=ON \                #Include Intel TBB support(Intel開發的並行編程開發工具),默認爲off
	  -D BUILD_TIFF=ON \              #Build libtiff from source(一種靈活的位圖格式),默認爲ON
	  -D WITH_V4L=ON \                #支持Vedio4Linux(是Linux中關於視頻設備的內核驅動,爲針對視頻設備的應用視頻設備的應用程序提供一系列接口函數,這些視頻設備包括TV卡、視頻捕捉卡和USB攝像頭等,對於USB攝像頭,其驅動程序中需要提供基本的I/O操作用於open、read、write、close函數的實現),默認爲ON
	  -D INSTALL_C_EXAMPLES=ON \      #Install C examples, 默認爲off
	  -D INSTALL_PYTHON_EXAMPLES=ON \ #Install Python examples, 默認爲off
	  -D BUILD_EXAMPLES=ON \          #Build all examples, 默認爲off
	  -D WITH_QT=ON \                 #支持QT(c++圖像用戶界面開發框架,多用於開發GUI),默認爲off
	  -D WITH_GTK=ON \                #支持跨平臺通用圖形工具包GTK, 默認爲on
	  -D WITH_OPENGL=ON \             #支持開放圖形庫OpenGL,默認爲off
	  ..

5、測試是否安裝成功

5.1 運行命令:

pkg-config --cflags --libs opencv 

出現下面信息
在這裏插入圖片描述

5.2 運行程序

生成可執行程序

g++ rgb2gray.cpp -o test `pkg-config --cflags --libs opencv`

執行文件

./test

如果出現找不到so文件的錯誤,那是動態鏈接庫的路徑沒有添加好,可按下面的方式添加:

  • 1、用vim打開/etc/ld.so.conf,注意要用sudo打開獲得權限,不然無法修改,如:sudo vim
    /etc/ld.so.conf,在文件最後中加上一行 /usr/local/lib

  • 2、運行:
    sudo ldconfig

  • 3、修改bash.bashrc文件:
    sudo vim /etc/bash.bashrc

  • 4、在文件末尾加入:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH

  • 5、最後執行:
    source /etc/bash.bashrc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章