1. 程式人生 > >Ubuntu16.04安裝OpenCV3.4.2

Ubuntu16.04安裝OpenCV3.4.2

1. OpenCV3.4.2 下載

2. 安裝準備

//軟體源更新
sudo apt-get update 

3. 安裝 gcc 和 g++ 開發環境

sudo apt-get install build-essential

檢視 gcc 版本 然後安裝 統一版本的 g++

gcc --version

安裝 g++

sudo apt-get install g++-4.4

檢視 g++ 版本

g++ --version

4. 安裝構建OpenCV的相關工具

//安裝cmake、git和pkg-config
sudo apt-get install cmake git pkg-config

5. 安裝常用影象工具包

//安裝jpeg格式影象工具包
sudo apt-get install libjpeg8-dev 
//安裝tif格式影象工具包
sudo apt-get install libtiff5-dev 
//安裝JPEG-2000影象工具包
sudo apt-get install libjasper-dev 
//安裝png影象工具包
sudo apt-get install libpng12-dev 

6. 安裝視訊I/O包(注意最後一個包的數字“4”後面是“L”)

sudo apt-get install libavcodec-dev libavformat-dev
libswscale-dev libv4l-dev

7. 安裝gtk2.0(樹莓派很可能下載錯誤,更換中科大或者清華源即可,ubuntu有可能出現包版本過高的情況,需要將依賴包降級安裝)

sudo apt-get install libgtk2.0-dev

8. 安裝優化函式包

sudo apt-get install libatlas-base-dev gfortran

9. 解壓opencv-3.4.2,並在目錄下建立Release資料夾

10. 在終端進入Release資料夾

~$ cd /home/nic/opencv-3.4.2/Release

11. CMake配置編譯

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

如果以下錯誤:

qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file     or         directory

執行以下指令:

sudo apt-get install qt5-default

12. Make編譯

sudo make

13. 安裝

sudo make install

14. 環境配置新增庫路徑

sudo gedit /etc/ld.so.conf.d/opencv.conf 
#開啟後可能是空檔案,在檔案內容最後新增
/usr/local/lib

15. 更新系統庫

sudo ldconfig

16. 配置bash,執行如下命令

sudo gedit /etc/bash.bashrc 
# 在末尾新增
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

17. 儲存退出,然後執行如下命令使得配置生效

source /etc/bash.bashrc
# 啟用配置然後更新database
sudo updatedb  

18. 在CLion中測試

  • 建立CMakeLists.txt檔案
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
add_executable(demo main.cpp)
target_link_libraries( demo ${OpenCV_LIBS} )
  • 建立Main.cpp檔案
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
    Mat image;
    # 必須使用絕對路徑
    image = imread("/home/nic/20171125154428073.png");
    if ( image.empty() )
    {
        cout<<"No image data!"<< endl;
        return -1;
    }
    namedWindow("Display Image");
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

OK !