[計算機視覺]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檔案。