1.提前安裝依賴
建議按照下述命令進行全安裝。實際在安裝過程中,系統會跳過那些已經安裝過的依賴。
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
依賴包包括在編譯的時候要用到一些軟件,像gcc,cmake;還有一些是下載opencv需要的工具,像Git;還有一些編譯opencv所必需的,像ffmpeg 或libav ;還有一些是可選的包等等。可以通過下面幾條命令來安裝這些依賴包:
2.下載源碼包
下載地址:https://github.com/opencv/opencv/releases
下載後解壓到/home目錄下,解壓後的文件名爲opencv-3.3.1。
3.開始安裝
按照下述命令依次執行安裝過程:
- 預備階段
cd ~/opencv-3.3.1
mkdir build # 創建工程編譯所需文件夾
cd build
- 配置
#注意,後面的兩個點千萬不能省,代表了上級目錄
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
上面的CMAKE_BUILD_TYPE =RELEASE指明編譯的版本是Release版,CMAKE_INSTALL_PREFIX=/usr/local指明編譯後的可執行程序的存放目錄。
- 編譯&&安裝
make -j7 # 多線程執行make任務
sudo make install
上面代碼中的-j7指7線程同時編譯,根據自己CPU的特點調整該參數,如果不瞭解自己CPU,直接執行make即可。
- 查看安裝信息
pkg-config --modversion opencv #查看安裝版本
4.驗證程序
創建main.cpp文件,加入如下代碼:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("lena.jpg");
imshow("源圖像",srcImage);
waitKey(0);
return 0;
}
程序所使用的編譯命令:
g++ -o main main.cpp `pkg-config opencv --cflags --libs`
上述編譯命令中:
–cflags:用來指定程序在編譯時所需要頭文件所在的目錄
–libs:用來指定程序在鏈接時所需要的動態鏈接庫的目錄
在上面的編譯命令中我們其實用到了一個工具“pkg-config”,它主要有以下幾個功能:
1.檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會打印出錯誤信息,避免鏈接錯誤版本的庫文件。
2.獲得編譯預處理參數,如宏定義,頭文件的位置。
3.獲得鏈接參數,如庫及依賴的其它庫的位置,文件名及其它一些連接參數。
注意:使用之前請確保你安裝的OpenCV的安裝鏈接庫文件的目錄下有一個pkgconfig文件夾,在該文件夾裏面有個opencv.pc的文件,其實這就是pkg-config下OpenCV的配置文件。
最後:
./main #進行驗證
若這時你發現有如下的錯誤提示:
./main: error while loading shared libraries: libopencv_highgui.so.3.3: cannot open shared object file: No such file or directory
請執行以下命令,爲程序指明庫文件的存儲位置。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
而後再次編譯、運行,即可成功。
5.如果你想卸載掉OpenCV
make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*