当前位置: 首页 > news >正文

Vitis Accelerated Libraries 学习笔记--OpenCV 安装指南

目录

1. 简介

2. 安装过程

2.1 安装准备

2.2 编译并安装 XRT

2.2.1 下载 XRT 源码

2.2.2  安装依赖项

2.2.3 构建 XRT

2.2.4 打包 DEB

2.2.5 安装 XRT

2.3 编译并安装 OpenCV

2.3.1 下载 OpenCV 源码

2.3.2 创建目录

2.3.3 设置环境变量

2.3.4 构建 opencv

3. 总结


1. 简介

使用Vitis Vision Library Vitis 视觉库,为什么要安装opencv库?

在使用Vitis Vision Library时,安装OpenCV库是因为许多视觉库的功能都提供了示例设计测试平台,使用OpenCV来演示加速内核的功能。

虽然 Vision 库的 Vitis 实现不需要 OpenCV,但运行示例设计需要 OpenCV,并且可能需要在用户测试平台验证中使用。

此外,OpenCV的使用可以帮助开发者更好地理解和验证他们的算法在实际场景中的性能。

本文提供了一个详细的步骤指南,包括必要的预置条件、如何创建源目录、从GitHub中复制OpenCV库以及如何设置环境变量等。

2. 安装过程

2.1 安装准备

先决条件:

  • 安装对应版本的 Vitis 统一软件环境,如 Vitis 2022.1
  • 安装对应版本的 XRT

安装 Vitis 的过程比较简单,通过官方的安装包执行安装即可。安装XRT则需要单独进行说明。

首先说明什么 XRT:

XRT 是 Xilinx Runtime 的缩写,它是一种开源软件接口,用于在 AMD 灵活应变平台上部署应用程序。

2.2 编译并安装 XRT

Linux 版本:Ubuntu 20.04.6 LTS

Vitis 版本:2022.1

XRT版本:2022.1

2.2.1 下载 XRT 源码

2.2.2  安装依赖项

cd <XRT>/src/runtime_src/tools/scripts/
sudo ./xrtdeps.sh

这个脚本会配置通用依赖项特定依赖项,如下:

通用依赖项

  • CMake: 一个跨平台的安装(编译)工具,可以用来管理软件编译的过程。
  • GCC/G++: GNU编译器套件,用于编译C和C++程序。
  • Git: 一个版本控制系统,用于跟踪在编程过程中对文件的更改。
  • Python3 & pip3: Python编程语言的解释器和Python包管理工具。
  • Boost: 提供C++库,用于任务,如线性代数、伪随机数生成、多线程、图像处理等。
  • OpenCL: 一个框架,用于编写在多种处理器上执行的程序,包括CPU、GPU和FPGA。

针对不同Linux发行版的特定依赖项

  • Ubuntu/Debian: libboost-dev, libcurl4-openssl-dev, libdrm-dev, libgtest-dev, libprotobuf-dev, libssl-dev 等。
  • CentOS/RHEL/Amazon Linux: boost-devel, libcurl-devel, libdrm-devel, gtest-devel, protobuf-devel, openssl-devel 等。对CentOS 7和RHEL 7,还会启用EPEL仓库和安装cmake3。
  • Fedora: 类似于CentOS/RHEL的依赖,但是使用dnf而不是yum作为安装命令。
  • SLES: 一些特定的库版本和开发工具,如libboost_filesystem1_66_0-devel, libopenssl-devel, libpng12-devel等。

2.2.3 构建 XRT

cd <XRT>/build
./build.sh

该脚本执行构建:编译、清理构建目录、运行单元测试、生成文档等。

脚本包含一个usage函数,提供了关于如何使用脚本的详细说明。

构建完毕如下

2.2.4 打包 DEB

cd build/Release
make package

2.2.5 安装 XRT

cd build/Release
ls *.deb

其中,xrt_202210.2.13.0_20.04-amd64-xrt.deb,是我们需要的 deb 安装文件,执行命令:

sudo apt install --reinstall ./xrt_202210.2.13.0_20.04-amd64-xrt.deb

2.3 编译并安装 OpenCV

2.3.1 下载 OpenCV 源码

OpenCV 库

这是 OpenCV 项目的主要库,包含了核心的功能模块。这些模块提供了构建基础计算机视觉功能所需的所有工具和算法,如图像处理、视频捕获、特征提取、基本的图形绘制功能等。这是使用 OpenCV 进行项目开发时必须要用到的基础库。

通过 git 命令或者直接下载。

git clone https://github.com/opencv/opencv --branch 4.4.0 source

OpenCV Contrib 库

这个库包含了 OpenCV 的额外模块,这些模块并不包含在主库中,主要是因为它们可能是实验性的,或者是因为版权或专利问题不能被广泛分发。Contrib 库提供了一些最新的、最先进的算法实现,这些通常是由社区贡献的。例如,一些最新的面部识别算法、特殊的图像处理效果和机器学习模块可能只在 Contrib 库中可用。

通过 git 命令或者直接下载。

git clone https://github.com/opencv/opencv_contrib --branch 4.4.0 source_contrib

2.3.2 创建目录

建议的目录结构:

Documents/└── opencv4/├── source/└── source_contrib/
cd source
mkdir build
cd build

2.3.3 设置环境变量

export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LIBRARY_PATH

将 /usr/lib/x86_64-linux-gnu/ 这个目录添加到了环境变量LIBRARY_PATH的前面。这个目录通常包含了许多标准和第三方的库文件,这些库文件是64位系统上的共享库(shared libraries),用于程序的动态链接。

2.3.4 构建 opencv

这段 CMake 命令用于配置OpenCV库的编译和安装过程。

cmake .. -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D WITH_V4L=ON \-D OPENCV_EXTRA_MODULES_PATH=../../source_contrib/modules \-DBUILD_TESTS=OFF -DBUILD_ZLIB=ON -DBUILD_JPEG=ON \-DWITH_JPEG=ON -DWITH_PNG=ON -DBUILD_EXAMPLES=OFF \-DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF \-DWITH_OPENEXR=OFF -DBUILD_OPENEXR=OFF \-DOPENCV_GENERATE_PKGCONFIG=ON \-D CMAKE_CXX_COMPILER=$XILINX_HLS/tps/lnx64/gcc-6.2.0/bin/g++

$XILINX_HLS 需要替换为 Vitis HLS 安装目录:/opt/Xilinx/Vitis_HLS/2022.1/

注:不能使用 source /opt/Xilinx/Vitis_HLS/2022.1/settings64.sh 命令,因为会导致cmake的版本过低问题。

构建和并安装:

make all -j8 #使用所有八个处理器核心(由“-j8”指定)来同时构建项目
sudo make install

如果不清楚有多少个处理器核心,可以通过如下指令进行构建:

make all -j$(grep -c ^processor /proc/cpuinfo)

 该命令会使用全部可用核心进行构建。

3. 总结

本文详细介绍了使用Vitis Vision Library时为什么需要安装OpenCV库,并提供了详尽的安装指南。OpenCV库的安装对于运行Vitis Vision Library的示例设计至关重要,因为它不仅可以帮助开发者演示加速内核的功能,还能在用户测试平台上验证算法性能。

安装过程涵盖了从安装 Vitis 环境和 XRT 到编译和安装 OpenCV 库的全过程。通过逐步的说明,用户可以轻松地完成安装并设置环境变量,为开发和测试提供必要的环境。

本文还提供了对于安装过程中可能遇到的依赖项的详细解释,确保了用户可以顺利完成安装过程。希望在 Vitis Vision Library 中利用 OpenCV 库的开发者提供一些有益指导。

相关文章:

  • 华为MetaERP会不会是国产高端ERP的开始?
  • 三国之家网站的设计
  • 移远通信发布高性价比智能模组SC200P系列,赋能金融支付等行业智慧升级
  • 归并排序代码
  • SD卡无法读取?原因分析与数据恢复策略
  • 网络安全法视角下的等保测评重要性与合规路径
  • 一文带你了解集装箱箱号识别原理,OCR识别及深度学习
  • 鸿枫网盘,文件夹面包屑跳转实现功能
  • 卡码网KamaCoder 98. 所有可达路径
  • 【STM32-新建工程-CubeMX】
  • 如何自制一个Spring Boot Starter并推送到远端公服
  • 【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】
  • 新手教学系列——“笑看”单元测试(pytest)
  • 【人工智能】—XGBoost算法在构建互联网防火墙异常行为识别模型应用案例
  • AcWing 1801:蹄子剪刀布 ← 模拟题
  • 【翻译】babel对TC39装饰器草案的实现
  • Hibernate【inverse和cascade属性】知识要点
  • k8s 面向应用开发者的基础命令
  • MySQL数据库运维之数据恢复
  • ReactNative开发常用的三方模块
  • 译有关态射的一切
  • 追踪解析 FutureTask 源码
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​flutter 代码混淆
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (Java数据结构)ArrayList
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)ssm码农论坛 毕业设计 231126
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (理论篇)httpmoudle和httphandler一览
  • (七)理解angular中的module和injector,即依赖注入
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .Net中wcf服务生成及调用
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @EnableWebMvc介绍和使用详细demo
  • [20170713] 无法访问SQL Server
  • [Android]常见的数据传递方式
  • [autojs]逍遥模拟器和vscode对接
  • [AX]AX2012 SSRS报表Drill through action
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [CTF]2022美团CTF WEB WP
  • [docker] Docker容器服务更新与发现之consul
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [leetcode top100] 0924 找到数组中消失的数,合并二叉树,比特位计数,汉明距离
  • [leetcode] 61. 旋转链表