ubuntu配置opencv4+qt creator上面調用opencv且編譯運行

前言

參考

https://zhuanlan.zhihu.com/p/87197806

下面是筆記---如果要看原版的話就點擊上面的鏈接。

 

 

 

由於最新版的OpenCV 4.1需要CMake 3.5.1版本,因此需要保證電腦中安裝的CMake編譯器版本高於3.5.1。可以通過代碼清單1-2中的命令安裝最新版CMake。

代碼清單1-2 安裝最新版CMake命令
1.  sudo apt-get update
2.  sudo apt-get upgrade
3.  sudo apt-get install build-essential cmake

 

其中安裝“update”和“upgrade”分別是更新軟件源和查看是否有軟件需要更新,這兩個命令一般用於安裝系統後初次下載軟件,或者更換源之後執行,可以根據實際情況不輸入該命令。安裝的“build-essential”是Linux系統中常用的一些編譯工具,“cmake”會直接安裝最新版CMake編譯器。

OpenCV 4.0的使用會需要很多的依賴項,例如圖片編碼庫、視頻編碼庫等。不過這些依賴是針對某些特定的功能,即使某些功能的依賴項沒有安裝,也不會影響OpenCV 4.1的編譯與使用,只是在使用特定功能時會出現問題。因此在不確定某型功能以後會不會用到時,建議將常用的依賴都安裝上,可以通過代碼清單1-3中的命令進行安裝。

代碼清單1-3 安裝OpenCV依賴
1.  sudo apt-get install libavcodec-dev libavformat-dev  libswscale-dev libv4l-dev libxvidcore-dev  libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev

 

如果需要結合Python使用OpenCV 4.1,需要安裝Python開發庫。如果沒有安裝,則無法生成Python的鏈接。Python開發庫有Python 2.7和Python 3.5兩個版本,如果能確定不使用某一版本,可以不用安裝對應版本的開發庫,可以通過代碼清單1-4中的命令進行安裝。

代碼清單1-4 安裝Python依賴
1.  sudo apt-get install python2.7-dev python3.5-dev

PS:筆者不需要用到python,故沒安裝這個。

這裏

 

編譯和安裝OpenCV 4.1

 

安裝完成所有依賴項之後,就可以進行OpenCV 4.2的編譯與安裝。由於Ubuntu系統中需要通過編譯安裝OpenCV,

我下載的openCv4.2,然後解壓到自己的路徑是:

屏幕截圖_307.png

屏幕截圖_308.png

ls /usr/local/opencv-4.2.0/
代碼清單1-5 在OpenCV 4.0文件夾中創建build文件命令
cd /usr/local/opencv-4.2.0/
sudo mkdir build
cd build

屏幕截圖_309.png

 

接下來開始編譯工作,編譯安裝命令如代碼清單1-6所示。

代碼清單1-6 編譯OpenCV命令
1.  sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
2.  sudo make -j4
3.  sudo make install

 

命令中“CMAKE_BUILD_TYPE”是編譯的模式參數,“CMAKE_INSTALL_PREFIX”是安裝路徑參數。這些參數都可以缺省,但是如果在安裝多個版本的OpenCV時,設置不同的安裝路徑將變得十分有必要。

 

第一行命令的最後一定不要忘記有一個“..”指令,其含義是告訴編譯器將要編譯的文件是來自上一層文件夾中的CMakeList.txt文件。

 

第二行命令是完成最終的編譯,“-j4”的意思是啓用4個線程同時進行編譯,可以根據自己計算機的性能自主選擇,例如,啓用8個線程“-j8”,只用單線程可以缺省。

之後根據計算機性能不同,將會是一個漫長的等待編譯完成的過程。在編譯完成後,用代碼清單1-6中第3行代碼安裝OpenCV 4.2。

 

環境配置

 

 

安裝OpenCV 4.1之後還需要通過配置環境告訴系統安裝的OpenCV 4.1在哪裏,按照如下步驟操作即可完成環境配置,所有的命令在代碼清單1-7中給出。

首先執行代碼清單1-7中第1行命令,可能會打開一個空白的文件,但是無論是否爲空白文件,都需要在末尾添加路徑“/usr/local/lib”。

這裏添加內容與我們編譯時設置的路徑有關,如果安裝路徑變化,這裏添加的內容也要隨之改變。

保存文件並退出後,使用代碼清單1-7中第2行命令將配置路徑生效。接下來需要配置bash,在終端通過代碼清單1-7中第3行命令打開bash.bashrc文件,在打開的文件末尾加上OpenCV 4.1的安裝路徑,代碼如代碼清單1-7中第4行和第5行所示。

這裏需要重點說明的是,文件路徑需要與設置的安裝路徑相對應。

保存輸入內容後,通過代碼清單1-7中第6行和第7行命令更新系統的配置環境,最終完成了OpenCV 4.1的安裝。

代碼清單1-7 Ubuntu系統中配置OpenCV 4.0環境
1.  sudo gedit /etc/ld.so.conf.d/opencv.conf
2.  sudo ldconfig
3.  sudo gedit /etc/bash.bashrc
4.  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
5.  export PKG_CONFIG_PATH
6.  source /etc/bash.bashrc
7.  sudo updatedb

步驟說明如下:

 

第一步:編輯opencv.conf的內容如下:

屏幕截圖_311.png

然後保存。

繼續第二步。

sudo ldconfig

然後編輯:

sudo gedit /etc/bash.bashrc

在最後面添加內容:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

如下圖:

屏幕截圖_312.png

保存一下然後,調用:

source /etc/bash.bashrc

使配置生效,最後:

sudo updatedb

 

 

驗證OpenCV 4.1是否安裝成功

 

ps:參考原作者的實例,這裏結合qt creator直接寫代碼驗證。。

第一步:

CMakeLists.txt裏面導入OpenCV庫[demo如下]:

cmake_minimum_required(VERSION 3.5)
SET(SOURCE_FILES
main.cpp StudentInfo.cpp base001.cpp
)
project(cpp_study_003 LANGUAGES CXX)



## 引入OpenCV end

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

## 引入OpenCV begin
find_package(OpenCV REQUIRED) # 尋找opencv的安裝路徑
message(STATUS "OpenCV 類庫狀態")
message(STATUS "    版本號: ${OpenCV_VERSION}")
message(STATUS "    庫: ${OpenCV_LIBS}")
message(STATUS "    路徑: ${OpenCV_INCLUDE_DIRS}")
# Add OpenCV headers location to your include paths
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(cpp_study_003 ${SOURCE_FILES})
# Link your application with OpenCV libraries
##注意 cpp_study_003是我的項目名稱,你需要改成自己的項目名稱
## 還有,target_link_libraries要用在add_executable後面
target_link_libraries(cpp_study_003 ${OpenCV_LIBS})

屏幕截圖_316.png

ps:

set(CMAKE_CXX_STANDARD 14)

這段的意思是,cmake用的c++14來進行編譯。

 

 

然後build以後,在qt creator你會發現---嗯?多了一些東西:

屏幕截圖_315.png

 

 

然後,在main.cpp上面弄個測試例子,我懶直接抄的opencv自帶的例子---在samples文件夾的cpp目錄下面,代碼如下:

// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html

#include <opencv2/core/utility.hpp>
#include <iostream>

static const std::string keys = "{ b build | | print complete build info }"
                                "{ h help  | | print this help           }";

int main(int argc, const char* argv[])
{
    cv::CommandLineParser parser(argc, argv, keys);
    parser.about("This sample outputs OpenCV version and build configuration.");
    if (parser.has("help"))
    {
        parser.printMessage();
    }
    else if (!parser.check())
    {
        parser.printErrors();
    }
    else if (parser.has("build"))
    {
        std::cout << cv::getBuildInformation() << std::endl;
    }
    else
    {
        std::cout << "Welcome to OpenCV " << CV_VERSION << std::endl;
    }
    return 0;
}

 

執行以後得到結果:

屏幕截圖_317.png

 

 

很贊哦! (1024)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章