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 库的开发者提供一些有益指导。

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

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

相关文章

【STM32】看门狗

1.看门狗简介 看门狗起始就是一个定时器&#xff0c;从功能上说它可以让微控制器在程序发生意外&#xff08;程序进入死循环或跑飞&#xff09;的时候&#xff0c;能重新恢复到系统刚上电状态&#xff0c;以保障系统出问题的时候可以重启一次。说的简单一点&#xff0c;看门狗…

加速业务布局,30年老将加盟ATFX,掌舵运营新篇章

全球领先的差价合约经纪商ATFX日前宣布了一项重大人事任命&#xff0c;聘请业界资深人士约翰博格(John Bogue)为机构业务运营总监。约翰博格是一名行业老将&#xff0c;曾在差价合约界深耕三十余载。伴随其加入ATFX&#xff0c;相信他的深厚专业知识和从业经验将为ATFX机构业务…

HarmonyOS NEXT Developer Beta1配套相关说明

一、版本概述 2024华为开发者大会&#xff0c;HarmonyOS NEXT终于在万千开发者的期待下从幕后走向台前。 HarmonyOS NEXT采用全新升级的系统架构&#xff0c;贯穿HarmonyOS全场景体验的底层优化&#xff0c;系统更流畅&#xff0c;隐私安全能力更强大&#xff0c;将给您带来更高…

数据集的未来:如何利用亮数据浏览器提升数据采集效率

目录 一、跨境电商的瓶颈1、技术门槛2、语言与文化差异3、网络稳定性4、验证码处理和自动识别5、数据安全6、法规和合规 二、跨境电商现在是一个合适的商机吗&#xff1f;三、数据集与亮数据浏览器1、市场分析2、价格监控3、产品开发4、供应链优化5、客户分析 四、亮数据浏览器…

Jenkins流水线发布,一篇就解决你的所有疑惑

这次搭建的项目比较常规,前端是react写的,后端是springboot,并且由于是全栈开发,所以是在同一个项目中。接下来我演示下怎么用jenkins进行自动化发布。 1.jenkins必装插件 这里用到的是jenkinsFile主要是基于Groovy这个沙盒,有些前置插件。这里使用maven进行打包,所以需…

如何提高项目风险的处理效率?5个重点

提高项目风险的处理效率&#xff0c;有助于迅速识别和应对风险&#xff0c;减少风险导致的延误&#xff0c;降低成本&#xff0c;提升项目质量&#xff0c;确保项目按时交付。如果项目风险处理效率较低&#xff0c;未能及时发现和处理风险&#xff0c;导致问题累积&#xff0c;…

浏览器扩展V3开发系列之 chrome.runtime 的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.runtime API 提供了一系列的方法和事件&#xff0c;可以通过它来管理和维护 Chrome 扩展的生命…

揭示优化Prompt的秘诀:如何让API表现媲美网页版

为什么用GPT API&#xff08;GPT-3.5-turbo&#xff09;进行程序分析时&#xff0c;效果好像比网页版的GPT-3.5差一点&#xff1f;这可能有几个原因&#xff0c;咱们细说一下。 1. Prompt不同 这是最常见的问题之一。API调用时的指令&#xff08;prompt&#xff09;往往比较简…

Android13 WMS窗口层级树

1&#xff0c;认识层级树 可以通过dumpsys activity containers 看到 WMS 层级树的结构 ACTIVITY MANAGER CONTAINERS (dumpsys activity containers) ROOT typeundefined modefullscreen override-modeundefined requested-bounds[0,0][0,0] bounds[0,0][1440,2960]#0 Displa…

【每日刷题】Day75

【每日刷题】Day75 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1833. 雪糕的最大数量 - 力扣&#xff08;LeetCode&#xff09; 2. 面试题 17.14. 最小K个数 - 力扣…

【数据库】Oracle安装报错(win10安装oracle提示环境不满足最低要求)

目录 一、问题场景&#xff1a; 二、问题描述 三、原因分析&#xff1a; 四、解决方案&#xff1a; 一、问题场景&#xff1a; 安装Oracle数据库 二、问题描述 安装之前提示&#xff08; [INS-13001]环境不满足最低要求。 是否确实要继续? &#xff09; 如图所示&…

C# unknow column “p0.TaskTypeId‘ in ‘field list‘

这个问题就是数据库出现问题&#xff0c;去 日志中去看 &#xff0c;找个具体表去 看实体类&#xff0c;与数据库中的表&#xff0c;是否存在字段。

若依项目实战------企业人力资源管理平台

一、数据库名称规范化及建表相关 1.术语名称 1.系统名称&#xff1a;企业人力资源管理平台英文翻译&#xff1a;Enterprise Human Resource Management Platform缩写&#xff1a;EHR 2.员工信息管理&#xff08;Employee Information Management 缩写&#xff1a;EIM&#…

Vue-双向数据绑定指令

v-model指令 双向数据绑定就是当数据设置给表单元素时&#xff0c;修改这个数据会修改表单元素的值&#xff0c; 修改表单元素的值同样也会修改这个数据 <body><div id"app"><input type"text" v-model"name"><p>{{name…

GPTCache:革新大模型缓存,降低成本,提升效率

GPTCache介绍 随着应用程序越来越受欢迎并遇到更高的流量水平,与 LLM API 调用相关的费用可能会变得相当可观。此外,LLM 服务的响应时间可能会很慢,尤其是在处理大量请求时。GPTCache是一个致力于构建用于存储 LLM 响应的语义缓存的项目。 项目架构 数字人助力传统客服 1…

成熟ICT测试系统与LabVIEW定制开发的比较

ICT&#xff08;In-Circuit Test&#xff09;测试系统是电子制造行业中用于电路板&#xff08;PCB&#xff09;组件检测的重要工具。市场上有许多成熟的ICT测试系统&#xff0c;如Keysight、Teradyne、SPEA等公司提供的商用解决方案。此外&#xff0c;LabVIEW作为一种强大的图形…

Dubbo运行原理

目录 Dubbo通讯协议 Dubbo负载均衡策略 RPC和HTTP有什么区别&#xff1f; 让你设计一个RPC框架&#xff0c;如何考虑数据序列化问题&#xff1f; Dubbo 是一款高性能、轻量级的开源 RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;主要用于构建分布式服务和微服务…

分享一个微信管理工具

聚合管理多个微信号 1、聚合聊天 支持多微信账号消息&#xff0c;在统一端口接收回复 2、话题素材库 可提前把话题准备好用到的时候一键发送 3、朋友圈互动 支持在聊天窗口直接看到当前客户朋友圈实时点赞评论互动 批量多号添加好友 1、批量添加联系人&#xff0c;导入联系…

蓝牙模块在车载系统中的应用与集成:现状、挑战与未来展望

随着科技的快速发展&#xff0c;蓝牙技术已经深入到我们生活的方方面面&#xff0c;其中车载系统中的应用尤为显著。蓝牙模块作为一种无线通信技术&#xff0c;不仅为驾驶者提供了更加便捷的操作体验&#xff0c;同时也提升了驾驶的安全性。本文旨在分析蓝牙模块在车载系统中的…

LabVIEW在脑机接口(BCI)研究中的应用

脑机接口&#xff08;Brain-Computer Interface&#xff0c;BCI&#xff09;技术通过解读大脑活动&#xff0c;将人类思维与计算机或其他设备连接起来&#xff0c;广泛应用于神经康复、认知研究和人机交互等领域。LabVIEW作为强大的图形化编程环境&#xff0c;在BCI研究中发挥着…