博客 / 詳情

返回

基於飛騰平台的OpenCV的編譯與安裝

【寫在前面】飛騰開發者平台是基於飛騰自身強大的技術基礎和開放能力,聚合行業內優秀資源而打造的。該平台覆蓋了操作系統、算法、數據庫、安全、平台工具、虛擬化、存儲、網絡、固件等多個前沿技術領域,包含了應用使能套件、軟件倉庫、軟件支持、軟件適配認證四大板塊,旨在共享尖端技術,為開發者提供一個涵蓋多領域的開發平台和工具套件。點擊這裏開始你的技術升級之旅吧

image.png

本文分享至飛騰開發者平台《飛騰平台OpenCV編譯安裝説明》

1 介紹

  OpenCV(Open Source Computer Vision Library)是一個基於BSD許可(開源)發行的跨平台計算機視覺和機器學習軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。軟件庫包含了超過2500種計算機視覺和機器學習領域內的通用算法,廣泛應用於人臉檢測、人臉識別、目標檢測、視頻內行為分析、3D建模、相似圖像檢測、眼動追蹤和增強現實等等。OpenCV同時提供了C++, Java, MATLAB等語言的接口,可利用處理器相關SIMD指令集對程序進行加速,也支持CUDA和OpenCL。OpenCV是模塊化的結構設計,包括了多個共享或靜態庫,如表1.1所示。關於OpenCV的更多信息請查閲參考文獻【1】(文末)。

核心功能(core) 定義了基本的的數據結構,包含矩陣的數據結構和基本操作方式。
圖像處理(imgproc) 包括線性和⾮線性的圖像濾波、⼏何圖像轉換(縮放、仿射和透視調整)、顏⾊模式轉換、直⽅圖等等。
視頻分析(video) 包含了運動估計、背景消除和⽬標跟蹤算法。
立體標定和3D重建(calib3d) 提供基本的多視圖⼏何算法、平⾯和⽴體影像校正、目標姿態估計和3D重建算法。
二維特徵框架(Features2d) 顯著特徵探測器、描述符和描述符匹配器。
目標檢測(Objectect) 檢測對象和預定義的類的實例(例如:臉部、眼睛、杯⼦、⼈、⻋等等)。
圖像界面(Highgui) 提供⼀個簡單易⽤的UI。
視頻接口(videoio) 提供⼀個簡單易⽤的視頻捕獲和編碼解碼界⾯。
其他 FLANN(神經⽹絡)和Google測試封裝、 Python綁定等等

2 環境説明

2.1 硬件環境

  硬件環境如下表所示。

項目 説明
CPU FT-2000/4
網絡 可訪問外網
存儲 無要求
內存 無要求

2.2 軟件環境

2.2.1 操作系統

  操作系統環境如下表所示。

項目 説明
Kylin V10
Kernel 4.4.131

2.2.2 軟件環境

軟件環境如下表所示。

項目 版本 下載地址
GCC 5.4.0
cmake 3.18.0 https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.0.tar.gz
OpenCV 4.4.0 https://github.com/opencv/opencv/archive/4.4.0.tar.gz
OpenCV_extra 4.4.0 https://github.com/opencv/opencv_extra/archive/4.4.0.tar.gz

3 編譯安裝

3.1 安裝OpenCV所需依賴庫

  依賴版本要求:
    GCC 4.4.x or later
    CMake 2.8.7 or higher
    Git
    GTK+2.x or higher, including headers (libgtk2.0-dev)
    pkg-config
    Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev,python-numpy)
    ffmpeg or libav development packages: libavcodec-dev, libavformat-dev,libswscale-dev

  可選項:
    libtbb2 libtbb-dev
    libdc1394 2.x
    libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
    CUDA Toolkit 6.5 or higher

  安裝方式:

# sudo apt-get install build-essential
# sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev
libavformat-dev libswscale-dev python-dev python-numpy libopenblas-dev

  安裝選裝庫:

方式一:
# sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev
libtiff-dev libjasper-dev libdc1394-22-dev

方式二:
選擇相應的配置選項後,OpenCV會在安裝過程中自動下載相關項依賴庫。

3.2 編譯安裝OpenCV

  第一步 下載源碼包(建議在網頁端下載源碼)。

git clone <https://github.com/opencv/opencv/archive/4.4.0.tar.gz> /

git clone <https://github.com/opencv/opencv_extra/archive/4.4.0.tar.gz>

  第二步 解壓。

tar zxf opencv-4.4.0.tar.gz

tar zxf opencv_extra-4.4.0.tar.gz

  第三步 編譯選項配置(詳細配置選項見第四章)。

cd opencv-4.4.0

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

    三種cmake選項配置方式:

    A、命令行 cmake -Doption=value

    B、cache文件 cmake -C my_options.txt

    C、交互式:ccmake 或者 cmake-gui

    Note : 對於Tengine等選裝項,opencv會在選擇配置後自動下載安裝。

  第四步 編譯安裝。

make -j4

make install \#默認安裝到 /usr/local/目錄下

#或者下列方式,去掉strip信息

cmake --build . --target install/strip

  第五步 配置

    1、配置安裝庫到全局變量

在/etc/ld.so.conf/目錄下opencv.conf

添加  \<path to your OpenCV installed \>到 opencv.conf

Ldconfig

    2、配置測試文件路徑(可直接添加到當前用户的環境變量之中方便後續測試工作。)

export OPENCV_TEST_DATA_PATH = \<path to opencv_extra/testdata\>

3.3 OpenCV運行驗證

  可執行bin目錄下opencv_test_** 任意一測試程序,以core模塊為例:

cd \<path to build dir/bin\>

./opencv_test_core

image.png

image.png

  Note :對於dnn的測試只有卷積計算部分,對於模型的測試需要額外下載相關的模型文件。

4 編譯選項説明

  本章只列出了OpenCV-4.4.0部分並行化和DNN相關的配置選項,其他選項請查閲參考文獻【2】。

4.1 並行化選項

選項 默認值 平台 描述
pthreads WITH_PTHREADS_PF ON Unix-like Default backend based on pthreads library is available on Linux, Android and other Unix-like platforms. Thread pool is implemented in OpenCV and can be controlled with environment variables OPENCV_THREAD_POOL_*. Please check sources in modules/core/src/parallel_impl.cpp file for details.
TBB WITH_TBB OFF Multiple Threading Building Blocks is a cross-platform library for parallel programming.
OpenMP WITH_OPENMP OFF Multiple OpenMP API relies on compiler support.
HPX WITH_HPX OFF Multiple High Performance ParallelX is an experimental backend which is more suitable for multiprocessor environments.

4.2 GUI選項

選項 默認值 平台 描述
WITH_GTK ON Linux GTK is a common toolkit in Linux and Unix-like OS-es. By default version 3 will be used if found, version 2 can be forced with the WITH_GTK_2_X option.
WITH_WIN32UI ON Windows WinAPI is a standard GUI API in Windows.
N/A ON macOS Cocoa is a framework used in macOS.
WITH_QT OFF Cross-platform Qt is a cross-platform GUI framework.

4.3 深度神經網絡相關選項

選項 默認值 描述
WITH_PROTOBUF ON Enables protobuf library search. OpenCV can either build own copy of the library or use external one. This dependency is required by the dnn module, if it can't be found module will be disabled.
BUILD_PROTOBUF ON Build own copy of protobuf. Must be disabled if you want to use external library.
PROTOBUF_UPDATE_FILES OFF Re-generate all .proto files. protoc compiler compatible with used version of protobuf must be installed.
OPENCV_DNN_OPENCL ON Enable built-in OpenCL inference backend.
WITH_INF_ENGINE OFF Enables Intel Inference Engine (IE) backend. Allows to execute networks in IE format (.xml + .bin). Inference Engine must be installed either as part of OpenVINO toolkit, either as a standalone library built from sources.
INF_ENGINE_RELEASE 2020040000 Defines version of Inference Engine library which is tied to OpenVINO toolkit version. Must be a 10-digit string, e.g. 2020040000 for OpenVINO 2020.4.
WITH_NGRAPH OFF Enables Intel NGraph library support. This library is part of Inference Engine backend which allows executing arbitrary networks read from files in multiple formats supported by OpenCV: Caffe, TensorFlow, PyTorch, Darknet, etc.. NGraph library must be installed, it is included into Inference Engine.
OPENCV_DNN_CUDA OFF Enable CUDA backend. CUDA, CUBLAS and CUDNN must be installed.
WITH_HALIDE OFF Use experimental Halide backend which can generate optimized code for dnn-layers at runtime. Halide must be installed.
WITH_VULKAN OFF Enable experimental Vulkan backend. Does not require additional dependencies, but can use external Vulkan headers (VULKAN_INCLUDE_DIRS).
WITH_TENGINE OFF Enable experimental Tengine backend for ARM CPUs. Tengine library must be installed.

4.3.1 Tengine配置方式

  -DWITH_TENGINE=ON

  方式一:編譯過程中自動下載安裝(需要機器聯網)

  方式二:使用預編譯的lib,並制定路徑

  -DOPENCV_LIBTENGINE_ROOT_DIR=/UserFileDir/Tengine-library-dir

  配置安裝成功後:

  可通過strings <path to your opencv installed>/lib/ libopencv_dnn.so.xx.xx.xx |grep TENGINE驗證:

image.png

  沒有配置成功則無顯示.

4.4 CPU相關優化選項

  這部分選項一般不需要設置,編譯安裝過程會自動識別。如果需要添加特定feature,可以自己添加。只要CPU支持,就會按照相關的代碼路徑去執行程序。
  CPU_BASELINE: CPU支持的SIMD指令集
  如 CPU_BASELINE = NEON,FP16
  CPU_DISPATCH:自定義支持其他SIMD指令集。
  如 CPU_DISPATCH = AVX,AVX2
  Note: 運行時如不需要利用某個SIMD指令可以設置OPENCV_CPU_DISABLE來實現,如:
  OPENCV_CPU_DISABLE=FP16

5 參考資料

  [1]OpenCV官網及github:https://opencv.org/;https://github.com/opencv/opencv

  [2]OpenCV配置參考https://docs.opencv.org/master/db/d05/tutorial_config_referen...


推薦閲讀

  • 基於飛騰平台的Sqoop的安裝配置
  • 基於飛騰平台的Flume的安裝配置

歡迎廣大開發者來飛騰開發者平台獲取更多前沿技術文檔及資料

如開發者在使用飛騰產品有任何問題可通過在線工單聯繫我們



版權所有。飛騰信息技術有限公司 2023。保留所有權利。

未經本公司同意,任何單位、公司或個人不得擅自複製,翻譯,摘抄本文檔內容的部分或全部,不得以任何方式或途徑進行傳播和宣傳。

商標聲明

Phytium和其他飛騰商標均為飛騰信息技術有限公司的商標。

本文檔提及的其他所有商標或註冊商標,由各自的所有人擁有。

注意

本文檔的內容視為飛騰的保密信息,您應當嚴格遵守保密任務;未經飛騰事先書面同意,您不得向任何第三方披露本文檔內容或提供給任何第三方使用。

由於產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,飛騰在現有技術的基礎上盡最大努力提供相應的介紹及操作指引,但飛騰在此明確聲明對本文檔內容的準確性、完整性、適用性、可靠性的等不作任何明示或暗示的保證。

本文檔中所有內容,包括但不限於圖片、架構設計、頁面佈局、文字描述,均由飛騰和/或其關聯公司依法擁有其知識產權,包括但不限於商標權、專利權、著作權等。非經飛騰和/或其關聯公司書面同意,任何人不得擅自使用、修改,複製上述內容。

user avatar jishuroad 頭像 shimianfeixing_65812a5190e2b 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.