Ubuntu下編譯Opencv4.0及opencv_contribute模塊步驟詳解

2022-01-02 OpenCV學堂

點擊上方↑↑↑「OpenCV學堂」關注我

來自 社區網友 團粉 的熱心投稿

編譯環境:ubuntu16.04 LTS
Opencv版本:opencv4.0.1+opencv4.0.1 contribute

下載opencv4.0.1及contribute模塊

https://github.com/opencv/opencv/releases/tag/4.0.1
https://github.com/opencv/opencv_contrib/releases/tag/4.0.1

更換國內源

使用 ubuntu 原生源下載速度,可替換為國內源,提升下載速度

備份 ubuntu 原生源

sudo cp /etc/apt/sources.list   /etc/apt/sources.list.backup

使用gedit編輯sources.list文件

sudo gedit /etc/apt/sources.list

將sources.list文件中的內容替換為以下內容,更換為阿里源

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

以上內容僅支持 ubuntu16 ,其他ubuntu版本可自行百度

命令行輸入 sudo apt-get update 進行更新

安裝cmake及依賴環境

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen pylint libvtk6-dev

編譯安裝Opencv新建一個文件夾,存放下載的opencv壓縮包

mkdir opencv4
cd opencv4

將下載好的壓縮包拷貝到opencv4文件夾中解壓opencv壓縮包

.tar.gz 結尾的壓縮包使用 tar 工具進行解壓;.zip 結尾的壓縮包使用unzip工具進行解壓

tar -zxvf xxxx.tar.gz
unzip xxx.zip

解壓完成後查看該目錄下的文件

進入 opencv-4.0.1 文件夾,新建一個 build 文件夾,用於存放編譯過程中產生的文件

cd opencv-4.0.1
mkdir build
cd build

在 build 文件夾中編譯

在命令行中輸入以下內容:

cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_GENERATE_PKGCONFIG=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=ON
-D OPENCV_EXTRA_MODULES_PATH= /home/cht/opencv4/opencv_contrib-4.0.1/modules
-D OPENCV_EXAMPLES=ON ..

CMAKE_INSTALL_PREFIX:該選項為opencv安裝的目錄,可按實際目錄進行修改,一般放在/usr/local目錄下
OPENCV_GENERATE_PKGCONFIG:打開 pkg-config
OPENCV_EXTRA_MODULES_PATH:該選選項為opencv_contrib模塊下module文件夾,按實際目錄進行修改,若不編譯opencv_contrib模塊,該選項可以省略
.. :表示CMakeList.txt在上級目錄,命令最後的 .. 不能夠省略,否則會出現找不到CMakeList.txt

等待 cmake 完成.

cmake 執行過程需要下載一些壓縮包,可能由於網絡原因下載不下來,導致出錯,這時可以刪除 build 文件夾下的內容,重新執行 cmake 命令

在 build 文件夾中進行編譯,輸入 make

等待編譯完成...

編譯完成,輸入sudo make install 進行安裝

配置編譯環境

在命令行中輸入 gedit ~/.bashrc 打開 ~/.bashrc 文件
在 ~/.bashrc 文件中添加下面一行內容

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

使環境變量生效

輸入以下內容

source ~/.bashrc
sudo ldconfig

使用 pkg-config 進行測試驗證

pkg-config --libs --cflags opencv4

測試opencv程序
運行openv附帶的測試程序

/opencv-4.0.1/samples/cpp/example_cmake

cmake .
make
./opencv_example


運行結果:

手動編寫一個opencv測試程序打開命令行,新建一個opencv_test 文件夾用於存放測試代碼

mkdir opencv_test
cd opencv_test

新建一個 opencv_test.cpp 文件

gedit opencv_test.cpp

在 opencv_test.cpp 中 輸入以下內容

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(){
    Mat frame=imread("1.jpeg");
    if(frame.empty())
    {
        cout<<" frame is empty"<<endl;
        return -1;
    }
    imshow("input",frame);
    waitKey(0);
    return 0;
}

新建一個 CMakeLists.txt 文件

gedit CMakeLists.txt

在CMakeLists.txt 中輸入以下內容

cmake_minimum_required(VERSION 3.1)


set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

project(opencv_test)
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
add_executable(opencv_test opencv_test.cpp)
target_link_libraries(opencv_test ${OpenCV_LIBS})

新建一個 build 文件夾

mkdir build

進入build 文件夾中,編譯測試程序

cd build
cmake ..
make

查看並運行生成的可執行文件

在 build 文件夾中存放一張名為 1.jpeg 的圖片進行測試

ls
./opencv_test

運行結果:

相關焦點

  • Linux系統下編譯OpenCV
    Linux系統下要安裝OpenCV,需要自己下載源碼進行編譯,過程有些麻煩,很多地方也不理解為什麼要這麼做,只是單純記錄一下步驟。
  • Ubuntu下安裝OpenCV(七): 4.x的安裝與配置
    位置查看文件內容,在文件末尾可以看到生成.pc文件的語句。{OPENCV_PC_FILE_NAME}是.pc文件的名稱。(3)兩次生成根據文件內容可知,OpenCV的.pc文件會依據模板文件的內容,存放在構建目錄下的unix-install文件夾下。在我們完成make編譯這一步之後,就可以在unix-install下找到opencv4.pc文件了,這是.pc文件的第一次生成。.
  • 在Ubuntu中安裝OpenCV-Python | 三
    以下步驟針對Ubuntu 16.04和18.04(均為64位)進行了測試。可以通過兩種方式在Ubuntu中安裝OpenCV-Python:另一個重要的事情是所需的其他庫。OpenCV-Python僅需要Numpy(除了其他依賴關係,我們將在後面看到)。
  • Ubuntu下安裝OpenCV(八): 2.x的安裝與配置
    本文以OpenCV2.4.10為例,在Ubuntu18.04下使用Release模式進行原始碼編譯,展示從第4步到第10步的完整步驟。安裝OpenCV2.x和3.x的第一個區別在於2.x版本無需配置額外算法模塊。因為在OpenCV2.x中,名為contrib的模塊下包含的就是額外算法。
  • Windows10+VS2017+cmake 編譯opencv4.1.0 + opencv_contrib4.1.0
    這裡我使用的版本是 3.15.6,根據自己是 32 位還是 64 位來下載(x86指32位系統,x64指的是64位系統,見圖3)下載網址:https://cmake.org/download/二、軟體安裝及編譯1、opencv、opencv_contrib及cmake解壓新建文件夾opencv4,解壓opencv-4.1.0,opencv_contrib–4.1.0及cmake-3.15.6
  • OpenCV 3.0之後三年半,OpenCV 4.0出爐
    此外,在 OpenCL 的加持下,OpenCV 可以利用底層異構計算平臺的硬體加速。它的 GitHub 頁面中有一個「open_model_zoo」資源庫,包含了大量的計算機視覺預訓練模型,並提供下載方法,有助於加速開發和產品部署過程。OpenCV 應用廣泛,目前在用戶社區有 4.7 萬用戶,下載量約為 1400 萬。
  • C++ OpenCV Contrib模塊LBF人臉特徵點檢測
    使用VS2019編譯的OpenCV及Contrib模塊的源碼後,生成的dll的動態庫是VC16了,不是原來的VC15,而且在Debug和Relese都編譯了一遍(用處就在正式環境中速度會提高接近10倍>),所以會有opencv_world451.dll和opencv_world451d.dll兩個動態庫。
  • 與課堂---OpenCV-1
    核心模塊: HighGUIImageProcess **2D Feature *Camera Calibration and 3D reconstructionVideo Analysis 視頻分析 *Object Detection 物體檢測Machine Learning 機器學習 GPU
  • 【模型訓練】ubuntu 編譯 Darknet 與 YOLO 訓練
    上編譯 darknet 及 yolo 訓練的方法。1、編譯 darknet1.1 編譯 opencv    關於 cuda 及 cudnn 的安裝就不多說了,關於 opencv 的編譯可以參考我之前寫的《【經驗分享】x86、aarch64
  • OpenCV+VS環境配置一次,永久使用
    (此處以win32,debug示範,可以自己在release下或者64位下新建)。步驟:滑鼠右鍵 Debud | Win32 -> 添加新項目屬性表,隨便起個名字即可。配置 OpenCV 環境步驟:滑鼠右鍵剛才新建的屬性表,選擇屬性,VC++ 目錄 - > 包含目錄,引入你自己 opencv 安裝包下的路徑,如我的分別是:F:\opencv3.0\opencv\build\includeF:\opencv3.0\opencv\build\include\opencv
  • OpenCV G-API:1. 簡介
    G-API是一個比較特別的模塊,與OpenCV中其他模塊不同,G-API實際上提供了框架(framework)的功能,而非具體的計算機視覺算法,是一種基於圖模型的執行(graph-based model of execution)。它通過定義的操作(operations)來構建圖(graphs),而後在某個後端(backend)執行這些operations。
  • 中國團隊助力,OpenCV 4.3.0發布了
    這個版本的一個大看點是:OpenCV的深度學習模塊DNN在ARM上性能顯著提升。這一提升是由OpenCV中國團隊攜手OPEN AI LAB(開放智能)共同完成。OpenCV中國團隊於2019年9月由深圳市人工智慧與機器人研究院支持成立,是一個非營利目的團隊,致力於OpenCV的開發、維護和推廣工作。
  • OpenCV DNN模塊——從TensorFlow模型導出到OpenCV部署詳解
    255.F, Size(640, 640), Scalar(), true, false);net2.setInput(inputBlob2); Mat score;net2.forward(score); Mat segm;colorizeSegmentation(score, segm);   到這邊就完成了,OpenCV4.2似乎有個Bug,在Debug模式下有時候會運行失敗
  • [OpenCV實戰]45 基於OpenCV實現圖像哈希算法
    OpenCV contrib庫中的img_hash模塊提供計算兩種圖像的哈希值並比較兩張圖像相似性的算法。img_hash模塊主要移植自PHash庫,其官方代碼倉庫介紹見:Image Hashing algorithmsimg_hash模塊提供了多種圖像哈希算法,具體介紹如下:Average hash (also called Different hash)PHash (also called Perceptual hash
  • OpenCV 3.0 三年半後,OpenCV 4.0 終於出爐
    此外,在 OpenCL 的加持下,OpenCV 可以利用底層異構計算平臺的硬體加速。它的 GitHub 頁面中有一個「open_model_zoo」資源庫,包含了大量的計算機視覺預訓練模型,並提供下載方法,有助於加速開發和產品部署過程。OpenCV 應用廣泛,目前在用戶社區有 4.7 萬用戶,下載量約為 1400 萬。
  • OpenCV3.0新特性
    近期,OpenCV3.0發布,豐富了很多功能,添加了很多模塊,並進一步提升速度。其中谷歌、微軟等大公司也參與貢獻。圖1 OpenCV中文字檢測模塊圖2 OpenCV中的HDR算法 以下是OpenCV官方關於新版本的說明:With a great pleasure and great relief OpenCV team finally announces OpenCV 3.0 gold release, the most
  • OpenCV DNN模塊官方教程(一)加載Caffe模型做圖像分類
    OpenCV DNN模塊官方教程地址如下,可以查看各個對應的使用方法。
  • Tensorflow + OpenCV4 安全帽檢測模型訓練與推理
    下載的公開數據集,記得用opencv重新讀取一遍,然後resave為jpg格式,這個會避免在生成tfrecord時候的圖像格式數據錯誤。ValueError: Image format not JPEG2. 公開數據集中xml文件的filename有跟真實圖像文件名稱不一致的情況,要程序處理一下。
  • opencv相機標定和人頭姿態估計案例
    本博客基於 opencv 官方文檔和部分開原始碼來研究如何基於人臉關鍵點獲取頭部的朝向。國際慣例,參考博客:opencv:Camera Calibration and 3D Reconstruction[1]opencv:Real Time pose estimation of a textured object[