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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java技术专家面试指南80问【java学习+面试宝典】(八)

什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编程模型促进良好的编程习惯。 Spring事务管理的方式有…

ping命令返回结果实例分析

测试在各相关情况下ping命令回复信息。 网络环境搭建如下图所示&#xff1a; 【1】R1、R2、PC1和PC2没有配置&#xff0c;测试ping命令回复 在路由器没有配置端口IP地址和路由&#xff0c;PC没有配置IP地址、子网掩码和网关的情况下&#xff0c;PC2 ping 192.168.1.1。 在PC没…

加速鸿蒙生态共建,蚂蚁mPaaS助力鸿蒙原生应用开发创新

6月21日-23日&#xff0c;2024华为开发者大会&#xff08;HDC 2024&#xff09;如期举行。在22日的【鸿蒙生态伙伴SDK】分论坛中&#xff0c;正式发布了【鸿蒙生态伙伴SDK市场】&#xff0c;其中蚂蚁数科旗下移动开发平台mPaaS&#xff08;以下简称&#xff1a;蚂蚁mPaaS&#…

从零开始精通Onvif之音视频流传输

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 概述 Onvif协议的核心作用之一&#xff0c;是定义了如何通过网络访问和控制IP摄像机和其他视频设备。Onvif协议不仅涉及设备发现、设备管理&…

QtCreator/VS中制作带有界面的动态库

1、首先创建动态库项目 class UNTITLED25_EXPORT Untitled25 {public:Untitled25(); };2、直接右键创建同名窗口类进行覆盖 3、引入global头文件并添加到处宏</

【SSM】

Spring常见面试题总结 Spring 基础 什么是 Spring 框架? Spring 是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说 Spring 框架指的都是 Spring Framework&#xff0c;它是很多模块的集合&#xff0c;使用这些模块…

逆向学习数据库篇:表设计和数据库操作的核心概念与流程

本节课在线学习视频&#xff08;网盘地址&#xff0c;保存后即可免费观看&#xff09;&#xff1a; ​​https://pan.quark.cn/s/d020891757ac​​ 在数据库管理中&#xff0c;表设计和数据库操作是两个核心环节。表设计决定了数据的组织和存储方式&#xff0c;而数据库操作则…

国内云服务购买汇总

大厂 阿里云腾讯云华为云天翼云移动云AWS百度云火山引擎金山云京东云有道智云UCloud青云七牛云又拍云LeanCloud 聊天 融云环信 AI算力 AutoDL无问芯穹 其它领域 极光推送有赞云DaoCloudmemfire cloudAuthing

转让神州开头的无区域科技公司需要多少钱

您好&#xff0c;我公司现有2家无区域神州名称的公司转让。所谓无区域名称是公司名称中不带有行政区划、及行业特点的公司名称&#xff0c;都是需要在工商总,局核准名称的&#xff0c;对于民营企业来说也比较喜欢这种名称名称很大气&#xff0c;现在重核更严格了&#xff0c;所…

【SQL】count(1)、count(*) 与 count(列名) 的区别

在 SQL 中&#xff0c;COUNT 函数用于计算查询结果集中的行数。COUNT(1)、COUNT(*) 和 COUNT(列名) 都可以用来统计行数&#xff0c;但它们在实现细节和使用场景上有一些区别。以下是详细的解释&#xff1a; 1. COUNT(1) 定义: COUNT(1) 计算查询结果集中的行数。实现: 在执行…

淘客返利系统架构设计:从零到上线

淘客返利系统架构设计&#xff1a;从零到上线 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何设计一个淘客返利系统&#xff0c;从零到上线的…

0基础前端视频教程 下载

0基础前端视频教程 下载 下载地址 https://download.csdn.net/download/m0_67912929/89471104 ├─01、Js基础 │ ├─01 │ │ │ 03-code.zip │ │ │ │ │ ├─01-课堂PPT │ │ │ JavaScript基础第一天.pdf │ │ │ JavaScript基础第一…

Docker如何安装redis

目录 1. 拉取redis的镜像文件 2. 创建redis的容器卷 3. 准备reids的配置文件 4. 以配置文件启动redis 1. 拉取redis的镜像文件 # 默认安装最新版本 如果需要指定版本 docker pull redis:版本号 docker pull redis 详细版本请看dockerhub的官网&#xff1a; hub.docker…

JAVA如何将图片插入word文档且不破坏原有格式,设置图片悬浮与文字之上

首先需要引入俩东西 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.com/nexus/content/groups/public/</url></repository><dependency><groupId>e…

ipmitool运维工具

查看ipmi信息 # ipmitool lan print 1 # ipmitool fru list 1. 如何查询BMC地址&#xff08;ipmitool lan print 1 不行的话&#xff0c;使用ipmitool lan print 2&#xff09; # ipmitool lan print 2|grep "IP Address" IP Address Source : BIOS Assigned Addres…

大模型应用实战3——开源大模型(以Qwen为例)实现多论对话功能

对于国内用户来说&#xff0c;一个比较稳定的下载和部署开源大模型的方法就是使用ModelScope的SDK进行下载&#xff0c;然后再Transformer库进行调用。在代码环境中&#xff0c;ollama则提供了openai API风格的大模型调用方法。在开启ollama服务情况下&#xff0c;我们只需要进…

vue3中的shallowReactive

shallowReactive只能修改reactive中浅层次的数据 格式只能修改xxx.xxx 555 不能修改 xxx.xxx.xxx <template><div>{{ sum }}{{ person }}<button click"ssum">修改sum</button><button click"sperson">修改name</…

Python中的爬虫实战:豆瓣图书爬虫

Python是当今最热门的编程语言之一&#xff0c;在不同的领域都得到了广泛的应用&#xff0c;如数据科学、人工智能、网络安全等。其中&#xff0c;python在网络爬虫领域表现出色&#xff0c;许多企业和个人利用python进行数据采集和分析。本篇文章将介绍如何使用python爬取豆瓣…

MySQL中的ibd2sdi—InnoDB表空间SDI提取实用程序

ibd2sdi 是一个用于从 InnoDB 表空间文件中提取序列化字典信息&#xff08;Serialized Dictionary Information, SDI&#xff09;的实用程序。这个实用程序可以用于提取存储在持久化 InnoDB 表空间文件中的 SDI 数据。 可以对以下类型的表空间文件使用 ibd2sdi&#xff1a; 每…

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言&#xff1a;第一部分详细讲解DDS核心框图&#xff0c;还请读者深入阅读第一部分&#xff0c;以便理解DDS核心思想 三刷小梅哥视频总结&#xff01; 小梅哥https://www.corecourse.com/lander 一、DDS简介 DDS&#xff08;Direct Digital Synthesizer&#xff09;即数字…