基于飞腾平台的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 硬件环境

  硬件环境如下表所示。

项目说明
CPUFT-2000/4
网络可访问外网
存储无要求
内存无要求

2.2 软件环境

2.2.1 操作系统

  操作系统环境如下表所示。

项目说明
KylinV10
Kernel4.4.131

2.2.2 软件环境

软件环境如下表所示。

项目版本下载地址
GCC5.4.0
cmake3.18.0https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.0.tar.gz
OpenCV4.4.0https://github.com/opencv/opencv/archive/4.4.0.tar.gz
OpenCV_extra4.4.0https://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 并行化选项

选项默认值平台描述
pthreadsWITH_PTHREADS_PFONUnix-likeDefault 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.
TBBWITH_TBBOFFMultipleThreading Building Blocks is a cross-platform library for parallel programming.
OpenMPWITH_OPENMPOFFMultipleOpenMP API relies on compiler support.
HPXWITH_HPXOFFMultipleHigh Performance ParallelX is an experimental backend which is more suitable for multiprocessor environments.

4.2 GUI选项

选项默认值平台描述
WITH_GTKONLinuxGTK 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_WIN32UIONWindowsWinAPI is a standard GUI API in Windows.
N/AONmacOSCocoa is a framework used in macOS.
WITH_QTOFFCross-platformQt is a cross-platform GUI framework.

4.3 深度神经网络相关选项

选项默认值描述
WITH_PROTOBUFONEnables 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_PROTOBUFONBuild own copy of protobuf. Must be disabled if you want to use external library.
PROTOBUF_UPDATE_FILESOFFRe-generate all .proto files. protoc compiler compatible with used version of protobuf must be installed.
OPENCV_DNN_OPENCLONEnable built-in OpenCL inference backend.
WITH_INF_ENGINEOFFEnables 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_RELEASE2020040000Defines 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_NGRAPHOFFEnables 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_CUDAOFFEnable CUDA backend. CUDA, CUBLAS and CUDNN must be installed.
WITH_HALIDEOFFUse experimental Halide backend which can generate optimized code for dnn-layers at runtime. Halide must be installed.
WITH_VULKANOFFEnable experimental Vulkan backend. Does not require additional dependencies, but can use external Vulkan headers (VULKAN_INCLUDE_DIRS).
WITH_TENGINEOFFEnable 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和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/884245.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

景联文科技精准数据标注:优化智能标注平台,打造智能未来

景联文科技是一家致力于为人工智能提供全面数据标注解决方案的专业公司。 拥有一支由经验丰富的数据标注师和垂直领域专家组成的团队&#xff0c;确保数据标注的质量和专业性。 自建平台功能一站式服务平台&#xff0c;提供从数据上传、标注、审核到导出的一站式服务&#xff0…

Linux安装tomcat及配置环境变量超详细教程

微服务Linux解析部署使用全流程 linux系统的常用命令 Linux安装vim超详细教程 Linux安装JDK及配置环境变量超详细教程 1、上传压缩包 统一创建目录&#xff1a;/usr/local/tomcat&#xff0c;将压缩包上传到这个目录下。拖动文件到这个目录下即可。 2、执行解压命令 先进…

Sentinel-1 数据处理时如何手动下载高程数据

在Sentinel-1 数据数据预处理时&#xff0c;会使用高程数据进行地形校正。但选择自动下载高程时&#xff0c;由于网络原因经常会卡死&#xff0c;造成预处理过程不能正常进行&#xff01; 这个问题经过我的反复实践&#xff0c;可以通过手动下载高程数据来解决。下面是具体方法…

章管家 listUploadIntelligent.htm SQL注入漏洞

漏洞描述&#xff1a; 章管家 listUploadIntelligent.htm 接口处存在SQL注入漏洞&#xff0c;未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息&#xff08;例如&#xff0c;管理员后台密码、站点的用户个人信息&#xff09;之外&#xff0c;甚至在高权限…

软件功能测试需进行哪些测试?第三方软件测评机构有哪些测试方法?

在信息化社会迅速发展的今天&#xff0c;软件功能测试在软件开发生命周期中占据着不可或缺的地位。软件功能测试是评估软件系统是否符合预期功能和用户需求的过程。其重要性体现在提升软件质量、确保用户满意度以及降低维护成本等方面。 软件功能测试是对软件应用程序进行的一…

robomimic应用教程(二)——策略运行与评估

得到训练好的pth后&#xff0c;下一并将其进行部署及效果评估 可以在jupyter notebook中进行此操作&#xff0c;文件为robomimic文件夹中的examples/notebooks/run_policy.ipynb 本文采用pycharm调试 该脚本用于在环境中评估策略&#xff0c;主要包括从model zoo下载checkpoi…

【web开发】Spring Boot 快速搭建Web项目(三)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff08;二&#xff09;&#xff0c;由于已经搭建好项目初始的框架&#xff0c;以及自动创建了一个启动类文件&#xff08;TestWebApplication.java&#xff09; …

【Python】Daphne:Django 异步服务的桥梁

Daphne 是 Django Channels 项目的一部分&#xff0c;专门用于为 Django 提供支持 HTTP、WebSocket、HTTP2 和 ASGI 协议的异步服务器。Daphne 是一个开源的 Python 异步服务器&#xff0c;它可以帮助开发者运行异步应用程序&#xff0c;并且非常适合与 Django Channels 一起使…

电子电路的基础知识

电子电路是现代电子技术的基础&#xff0c;由电子元件&#xff08;如电阻、电容、电感、二极管、晶体管等&#xff09;和无线电元件通过一定方式连接而成的电路系统。 以下是对电子电路的详细概述&#xff1a; 一、定义与分类 定义&#xff1a;电子电路是指由电子器件和有关无…

解压视频素材下载网站推荐

在制作抖音小说推文或其他短视频时&#xff0c;找到合适的解压视频素材非常重要。以下是几个推荐的网站&#xff0c;可以帮助你轻松下载高质量的解压视频素材&#xff1a; 蛙学网 蛙学网是国内顶尖的短视频素材网站&#xff0c;提供大量4K高清无水印的解压视频素材&#xff0c;…

【记录】Excel|不允许的操作:合并或隐藏单元格出现的问题列表及解决方案

人话说在前&#xff1a;这篇的内容是2022年5月写的&#xff0c;当时碰到了要批量处理数据的情况&#xff0c;但是又不知道数据为啥一直报错报错报错&#xff0c;说不允许我操作&#xff0c;最终发现是因为存在隐藏的列或行&#xff0c;于是就很无语地写了博客&#xff0c;但内容…

如何使用Flux+lora进行AI模型文字生成图片

目录 概要 前期准备 部署安装与运行 1. 部署ComfyUI 本篇的模型部署是在ComfyUI的基础上进行&#xff0c;如果没有部署过ComfyUI&#xff0c;请按照下面流程先进行部署&#xff0c;如已安装请跳过该步&#xff1a; &#xff08;1&#xff09;使用命令克隆 ComfyUI &…

【友元补充】【动态链接补充】

友元 友元的目的是让一个函数或者类&#xff0c;访问另一个类中的私有成员。 友元的关键字friend是一个修饰符。 友元分为友元类和友元函数 1.全局函数作友元 2.类作友元 3.类的一个成员函数作友元 好处&#xff1a;可以通过友元在类外访问类内的私有和受保护类型的成员 坏处…

Python画笔案例-068 绘制漂亮米

1、绘制漂亮米 通过 python 的turtle 库绘制 漂亮米,如下图: 2、实现代码 绘制 漂亮米,以下为实现代码: """漂亮米.py注意亮度为0.5的时候最鲜艳本程序需要coloradd模块支持,安装方法:pip install coloradd程序运行需要很长时间,请耐心等待。可以把窗口最小…

智能Ai语音机器人的应用价值有哪些?

随着时间的推移&#xff0c;人工智能的发展越来越成熟&#xff0c;智能时代也离人们越来越近&#xff0c;近几年人工智能越来越火爆&#xff0c;人工智能的应用已经开始渗透到各行各业&#xff0c;与生活交融&#xff0c;成为人们无法拒绝&#xff0c;无法失去的一个重要存在。…

医疗大数据安全与隐私保护:数据分类分级的基石作用

医疗行业在数字化转型中迅猛发展&#xff0c;医疗大数据作为核心驱动力&#xff0c;深刻改变医疗服务的模式与效率。它不仅促进医疗信息的流通与共享&#xff0c;推动个性化、精准化的医疗服务新生态。同时&#xff0c;也在提升医疗服务质量、优化医疗资源配置等方面展现巨大潜…

Spring Ioc底层原理代码详细解释

文章目录 概要根据需求编写XML文件&#xff0c;配置需要创建的bean编写程序读取XML文件&#xff0c;获取bean相关信息&#xff0c;类&#xff0c;属性&#xff0c;id前提知识点Dom4j根据第二步获取到的信息&#xff0c;结合反射机制动态创建对象&#xff0c;同时完成属性赋值将…

蓝桥杯【物联网】零基础到国奖之路:十二. TIM

蓝桥杯【物联网】零基础到国奖之路:十二. TIM 第一节 理论知识第二节 cubemx配置 第一节 理论知识 STM32L071xx器件包括4个通用定时器、1个低功耗定时器&#xff08;LPTIM&#xff09;、2个基本定时器、2个看门狗定时器和SysTick定时器。 通用定时器&#xff08;TIM2、TIM3、…

Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】

Spring Cloud Alibaba-&#xff08;1&#xff09;搭建项目环境 Spring Cloud Alibaba-&#xff08;2&#xff09;Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-&#xff08;3&#xff09;OpenFeign【服务调用】 Spring Cloud Alibaba-&#xff08;4&#xff09;Sen…

数据分析工具julius ai如何使用

什么是julius ai Julius AI 是一款强大的ai数据分析工具。用户可以使用excel、数据库、文本文件等多种格式的数据&#xff0c;Julius AI 会自动分析这些数据并提供详细的解释和可视化图表。官网显示它目前已经有三十万用户。它也支持手机版。 虽然openai也支持生成图表&#xf…