最近在看《學習OpenCV3》這本書,所以記錄下我在ubuntu16.4下搭建C++版本OpenCV 3.4.5的過程。首先請確保cuda,gcc, g++都安裝好了,我這里是cuda 10.0,gcc-4.9.4和gcc-5.5.0,它們之間的版本只要是配套的應該就沒問題,我原本是按照Francesco Piscani油管視頻:OpenCV C++ on Linux Tutorial 1 - OpenCV 3.2 Installation on Ubuntu 16.04 進行安裝OpenCV 3.1.0 ,但是編譯老是報錯,后面懷疑是自己用的cuda版本有點新,而以前的Opencv 3.1.0有點跟不上配置,但之后就按照Davidhwj的
安裝步驟:
1. 更新系統源
sudo apt-get update
2. 安裝依賴項
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
3. 下載OpenCV 3.4.5
官網下載地址:https://opencv.org/releases/page
之后將其解壓至根目錄下,我這里是home/下。之后創建release文件夾:
cd opencv-3.4.5
~/opencv-3.4.5$ mkdir release
4. 設置cmake參數
~/opencv-3.4.5/$ cd release
~/opencv-3.4.5/release/$ sudo cmake
~/opencv-3.4.5/release/$ sudo cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
或者使用默認安裝設定:
~/opencv-3.4.5/release/$ sudo cmake ..
在cmake過程中常會報錯ippicv_2019_lnx_intel64_general_20180723.tgz下載超時,解決辦法就是到官方Github源碼里下載該壓縮包,之后打開opencv-3.4.5/3rdparty/ippicv/ippicv.cmake文件,然后復制下圖中選中的命名后綴:

在opencv-3.4.5/3rdparty/ippicv/下創建文件downloads,然后在downloads下創建文件名為linux-32e315a5b106a7b89dbed51c28f8120a48b368b4,並將之前下載的ippicv壓縮包放入該文件夾下,如下圖所示:

最后再次打開opencv-3.4.5/3rdparty/ippicv/ippicv.cmake文件修改原來網絡壓縮包下載地址為手動下載好壓縮包的文件地址,如下圖所示:

現在重新cmake就能成功了!
5. 編譯OpenCV
~/opencv-3.4.5/release/$ sudo make
~/opencv-3.4.5/release/$ sudo make install
6. 配置環境變量
~/opencv-3.4.5/release/$ sudo gedit /etc/ld.so.conf.d/opencv.conf
在文件內添加一行:/usr/local/lib
~/opencv-3.4.5/release/$ sudo ldconfig # 更新系統的共享鏈接庫
sudo gedit /etc/bash.bashrc
在bashrc里末尾加入以下兩行:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/home/lp/soft/opencv-3.4.5/release/lib:$LD_LIBRARY_PATH
# 保存bashrc后,使其生效:
~/opencv-3.4.5/release/$ source /etc/bash.bashrc
7. 測試OpenCV安裝是否正確
在opencv-3.4.5/samples/cpp下創建一個測試代碼並放入一張圖片如下:

用下面的命令創建測試代碼:
~/opencv-3.4.5/samples/cpp$ nano ex2_1.cpp
#include <opencv2/opencv.hpp> //Include file for every supported OpenCV function
int main( int argc, char** argv ) { cv::Mat imgOriginal; imgOriginal = cv::imread("building.png"); //cv::Mat img = cv::imread("building.jpg");
if( imgOriginal.empty() ) return -1; cv::namedWindow( "Example1", cv::WINDOW_AUTOSIZE ); cv::imshow( "Example1", imgOriginal ); cv::waitKey( 0 ); cv::destroyWindow( "Example1" ); return 0; }
g++運行下面的命令:
~/opencv-3.4.5/samples/cpp$ g++ ex2_1.cpp -o ex2_1 `pkg-config opencv --cflags --libs`
~/opencv-3.4.5/samples/cpp$ ./ex2_1
這是如果彈出圖片,說明OpenCV安裝沒問題,可以正常使用了。
