1. 程式人生 > >[計算機視覺]ubuntu16.04安裝opencv3.1.0+Qt5.6.0

[計算機視覺]ubuntu16.04安裝opencv3.1.0+Qt5.6.0

ubuntu16.04安裝opencv3.1.0+Qt5.6.0

1、安裝依賴的庫

sudo apt-get install build-essential
    // 必須的,gcc編譯環境
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    // 必須的,包括cmake等工具

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev
libtiff-dev libjasper-dev libdc1394-22-dev // 可選的,看個人需要,總共5M左右
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在安裝 g++ 等工具時 會提示 Unable to locate package build-essential,這種情況下先執行 sudo apt-get update 更新一下, 更新完。繼續 sudo apt-get install build-essential

在檔案無法儲存的時候, 可以使用命令 sudo vim ./etc/apt/sources.list  可以實現儲存

其實錯誤資訊已經很明確了,Unable to locate packet就是無法找到包嘛,那還不趕緊sudo apt-get update下!

Q2 ubuntu 連線無線網wifi (當然連有線也可以),線上升級安裝 連有線下載無線驅動 ADD  sudo apt-get install命令解釋

sudo 以其他身份來執行指令sudo可讓使用者以其他的身份來執行指定的指令t。在/etc/sudoers中設定了可執行sudo指令的使用者。若其未經授權的使用者企圖使用sudo,則會發出警告的郵件給管理員。使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。

apt-get 一個下載的命令引數有install 安裝 update 更新 remove 移除 check 檢查。比如: sudo apt-get install samba-3.0-7 下載並安裝一個名字為samba-3.0-7的程式


2、下載原始碼

cd ~/opencv310
    //opencv310為自己建的,原始碼將放在這裡
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

3、使用cmake安裝

  • 解壓原始碼包,得到opencv-3.1.0 (用git的話,即是opencv310)
  • 然後建立編譯目標資料夾
cd opencv-3.1.0
mkdir build
  • 1
  • 2
  • 1
  • 2
  • 使用cmake或著用cmake-gui生成Makefile 
    (1) cmake方式
cd opencv-3.1.0/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
    // 生成後的Makefile在build資料夾中,而需要的CMakeLists.txt在 ".."中,即上一級資料夾中(opencv-3.1.0
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

(2) cmake-gui方式 
cmake-gui即cmake和圖形介面版程式: 
先安裝cmake-gui

sudo apt-get install cmake-qt-gui
  • 1
  • 1

然後開啟cmake-gui: 
這裡寫圖片描述 
“/opencv-3.1.0” 和 “/opencv-3.1.0/build”換成自己的,然後先點 Configure 然後點 Generate。 

在Configure過程中,若出現 
– ICV: Downloading ippicv_linux_20141027.tgz… 
。。。。 
則下載 ippicv_linux_20141027.tgz,替換掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b 下的同名檔案即可,注意替換後,重新編譯,或著一開始就放進去 

4、安裝OpenCv

在opencv3.1.0/build下,終端執行:

make -j7
    // 7個執行緒編譯
sudo make install
    // 安裝
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

5、opencv程式編寫例項

  • 建立資料夾test
  • 編寫test.cpp
#include <opencv2/opencv.hpp>       // 注意:使用"/",和windows不同
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
    Mat img = imread("pic.jpg");
    if(img.empty())
    {
        cout<<"error";
        return -1;
    }
    imshow("mypic",img);
    waitKey();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

方法一:使用CMake生成OpenCv工程

  • 編寫CMakeLists.txt
project(test)                                       # 工程專案名,編譯出來的可執行檔名字

cmake_minimum_required(VERSION 2.8)                 # CMake工具最低版本要求

aux_source_directory(. SRC_LIST)                    # 原始檔列表

#include_directories(./header/)                     # 標頭檔案目錄

#link_directories(/usr/local/lib)                   # 庫檔案的目錄

add_executable(${PROJECT_NAME} ${SRC_LIST})         # 工程專案名和我們要編譯的檔名

find_package(OpenCV REQUIRED)                       # 搜尋指定的外部依賴庫標頭檔案和庫檔案

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})   # 連結到OpenCV庫
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 編譯程式
//目錄結構:
/*
test - text.cpp             //cpp檔案
       - CMakeLists.txt     //cmake生成檔案
       - pic.jpg            //測試影象
*/
cd test
cmake .
    // 生成makefile, “.”表示在當前目錄生成
make
    // 編譯
./test
    //執行程式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

方法二:使用Qt作為IDE環境生成opencv工程

  • 配置qt的cmake構建方案(需要安裝cmake): 
    1、開啟Qt,找到 “工具->選項->構建和執行->構建套件”,如下圖設定: 
    這裡寫圖片描述
    其中cmake安裝好,Qt會自動配置好 “CMake” 引數的 
    2、開始新建opencv工程 
    新建工程 - 選擇Non-Qt project 然後先Plain C++ Application 
    這裡寫圖片描述 
    3、然後下一步 
    這裡寫圖片描述 
    4、 選擇CMake 
    這裡寫圖片描述 
    5、只選擇剛配置的構建套件 
    這裡寫圖片描述 
    6、點完成 
    這裡寫圖片描述 
    7、會出現下圖對話方塊,點 “執行CMake” 就可以點 ”完成“ 了 
    這裡寫圖片描述 
    8、然後編定main.cpp和CMakeLists.txt檔案,CMakeLists.txt要增加最後兩行程式碼 
    這裡寫圖片描述
    然後執行即可出結果,這裡要注意的是,如果使用了”影子構建”(即專案構建生成的檔案單獨放在一個資料夾中,如build-untitled-Console_GCC_32bit_with_cmake-Default這樣的資料夾),則生成的可執行檔案也在build-untitled-Console_GCC_32bit_with_cmake-Default資料夾中,上述程式碼要想顯示出影象,就需要將圖片檔案pic.jpg放在此資料夾中。

9、其實,也可以在Qt中直接 Open Project,然後選擇開啟CMakeLists.txt,就可以從第5步開始配置專案,過程一樣的。

方法三:使用Makefile生成opencv工程

  • main.cpp使用之前的即,建立如下Makefile檔案
#Makefile

#使用g++編譯,且以C++11標準
CXX = g++ -Wall -std=c++11

#opencv需要的引數
CFLAGS =`pkg-config opencv --cflags` `pkg-config opencv --libs`
#只使用上面這一名,會提示"libippicv.a"這個庫找不到,所以自己新增上
UFLAGS = -L /usr/local/share/OpenCV/3rdparty/lib/ -l ippicv

#可執行檔名稱
TARGET = main

#原始檔
SOURCE = main.cpp

TARGET:
    $(CXX) -o $(TARGET) $(SOURCE) $(CFLAGS) $(UFLAGS)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 然後make,即可編譯,接著就可以運行了

方法四:使用qmake生成opencv工程

qmake需要編寫pro檔案,如下test.pro:

# app工程
TEMPLATE = app

# 檔名稱
TARGET = test

# 配置,新增pkg-config工具
CONFIG += \
    console \
    link_pkgconfig

# 新增opencv的庫
PKGCONFIG += opencv

# 新增opencv第三方庫ippicv
LIBS += -L /usr/local/share/OpenCV/3rdparty/lib -lippicv

# 原始檔
SOURCES += \
    main.cpp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

然後用如下命令

qmake test.pro
    // 會生成makefile
make
./test
    // 編譯完成,即可執行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

有了pro檔案,也可以用qt creator開啟工程,然後同樣可以執行。 
同時,也可以使用qt creator建立plain c++專案,使用qmake,然後改pro檔案。