作者:Yin Chaowen,AMD工程师;来源:AMD 开发者社区
1. 关于Vitis Vision Library
Vitis Vision 库是一组 90 多个内核,基于 OpenCV 计算机视觉库,针对 Xilinx™ FPGA、AI Engine™ 和 SoC 进行了优化。 Vitis Vision 库中的内核在 Xilinx Vitis™ 工具套件中进行了优化和支持。下面是用户手册的链接:
https://docs.xilinx.com/r/2022.2-English/Vitis_Libraries/vision/index.h…
2. 硬件和软件要求
Vitis Vision 库设计用于与 Zynq™、Zynq Ultrascale+™、VCK190™ 和 Alveo™ FPGA 配合使用。 该库已在 zcu102、zcu104、vck190、U50 和 U200 板上经过验证。
必要条件:
- 有效安装 Vitis™ 2022.2 或更高版本以及相应的许可证。
- 必须安装 Xilinx (XRT)。 XRT 为 Xilinx FPGA 提供软件接口。
- 安装 OpenCV-4.4.0 x86 库(兼容 libjpeg.so)。 x86 库必须用于
a) L1 flow irrespective of target FPGA device being PCIe or embedded.
b) L2/L3 flow when the target device is PCIe based
c) L2/L3 flow when performing software emulation for an embedded platform.
对于针对嵌入式平台的 L2/L3 Flow(针对hardware emulation and hardware build),应使用 sysroot 中附带的 aarch32/aarch64 版本 OpenCV。
- 如果 libOpenCL.so 不存在,则必须安装。
- 安装 Vitis 2022.2 或更高版本支持该平台的卡。
- 如果针对嵌入式平台,请安装它并设置评估板。
3. OpenCV 安装指导
建议全新安装 OpenCV 4.4.0,不要使用系统的现有库,因为它们可能适用于 Vitis 环境,也可能不适用于。
请确保更新和升级系统的软件包和操作系统库,并安装 cmake 版本>3.5,然后再继续。不然可能遇到如下的错误:#CMake Error: The source directory "/home/***/Desktop/source/source/build/WITH_V4L=ON" does not exist.
以下步骤可帮助安装编译和链接 Vitis Vision 主机代码中的 OpenCV 调用所需的基本库。
- create a directory "source" and clone opencv-4.4.0 into it.
- create a directory "source_contrib" and clone opencv-4.4.0-contrib into it.
- create 2 more directories: build , install
- open a bash terminal and cd to build directory
- Run the command: export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
- Run the command: cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=< path-to-install-directory> -D CMAKE_CXX_COMPILER=< path-to-Vitis-installation-directory>/tps/lnx64/gcc-6.2.0/bin/g++ -D OPENCV_EXTRA_MODULES_PATH=< path-to-source_contrib-directory>/modules/ -D WITH_V4L=ON -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 ..
- Run the command: make all -j8
- Run the command: make install
下面是一个完整的示例,基于Ubuntu 22.04/bash,在/home/ycw/Desktop路径下操作。
cd /home/ycw/Desktop
git clone https://github.com/opencv/opencv --branch 4.4.0 source
git clone https://github.com/opencv/opencv_contrib --branch 4.4.0 source_contrib
cd ./source/
mkdir build
mkdir install
cd ./build
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
# 下面的注意点
# 1. 最后两个..不能少
# 2. CMAKE_INSTALL_PREFIX 是输出目录,可以自己指定
# 3. CMAKE_CXX_COMPILER的指向的是Vitis_HLS, 并不是Vitis.
# 4. OPENCV_EXTRA_MODULES_PATH 是之前git clone下来的source_contrib文件路径。
# 5. 这里的camke (usr/bin/cmake) 是3.27的版本cmake.
# 6. 这里执行下面命令的当前目录是在build内: ycw@chaoweny:~/Desktop/source/build$
/usr/bin/cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="/home/ycw/Desktop/install" -D CMAKE_CXX_COMPILER="/tools/Xilinx/Vitis_HLS/2022.2/tps/lnx64/gcc-6.2.0/bin/g++" -D OPENCV_EXTRA_MODULES_PATH="/home/ycw/Desktop/source_contrib/modules" -D WITH_V4L=ON -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 ..
#这里完成之后会有类似的的输出
#-- Install to: /home/ycw/Desktop/install
#-- -----------------------------------------------------------------
#-- Configuring done (27.6s)
#-- Generating done (0.3s)
#-- Build files have been written to: /home/ycw/Desktop/source/build
make all -j8 VERBOSE=1
make install
一些可能遇到的问题:
Q1: 遇到下面的这个错误,可能cmake的版本没有大于3.5。
#CMake Error: The source directory "/home/ycw/Desktop/source/source/build/WITH_V4L=ON" does not exist.
Q2:FATAL: In-source builds are not allowed.
# 需要安装上面的步骤mkdir build文件夹,注意如果已经创建了build目录,还是出现这个 FATAL ERROR 注意 cd回 source目录内,尝试使用如下命令清理一下cache:rm -rf CMakeCache.txt CMakeFiles
Q3:CMAKE_CXX_COMPILER= path-to-Vitis-installation-directory>.
# 这里的path-to-Vitis-installation-directory应该设置成Vitis_HLS的路径。
见上面的完整示例。
4. 一些其他的信息:
https://github.com/Xilinx/Vitis_Libraries/tree/2022.2/vision#source-fil…
https://github.com/Xilinx/Vitis_Libraries/tree/2022.2/vision#applicatio…
https://github.com/Xilinx/Vitis_Libraries/tree/2022.2/vision#other-info…
https://github.com/Xilinx/Vitis_Libraries/tree/2022.2/vision#acknowledg…
5. 两种platform的master/vision/L3/examples/isppipeline的流程:
Level 3: Pipeline Applications:
https://github.com/Xilinx/Vitis_Libraries/tree/master/vision/L3#level-3…
不同设备和行为流程如下:

实例:
1. Pcie设备示例(U50):xilinx_u50_gen3x16_xdma_5_202210_1.xpfm的编译make流程:
a. OPENCV_INCLUDE、OPENCV_LIB指向的是步骤3(OpenCV 安装指导)CMAKE_INSTALL_PREFIX设置的目录内。
b. U50的platform(xilinx_u50_gen3x16_xdma_5_202210_1.xpfm)如果没有部署,可以按照下面 的链接部署。
https://www.xilinx.com/products/boards-and-kits/alveo/u50.html#gettingS…
该示例xilinx_u50_gen3x16_xdma_5_202210_1.xpfm默认部署在下图的路径。

c. 示例代码:
cd /home/ycw/Desktop/Vitis_Libraries-2022.2/vision/L3/examples/isppipeline
source /tools/Xilinx/Vitis/2022.2/settings64.sh
source /opt/xilinx/xrt/setup.sh
export PLATFORM=/opt/xilinx/platforms/xilinx_u50_gen3x16_xdma_5_202210_1/xilinx_u50_gen3x16_xdma_5_202210_1.xpfm
# export OPENCV_INCLUDE=
Zynq MPSoC
Zynq® UltraScale+™ MPSoC(多处理器系统芯片)是赛灵思(Xilinx)推出的一款集成了处理器系统和可编程逻辑的器件。这一系列芯片采用 UltraScale+ 架构,结合 ARM 处理器和可编程逻辑,为嵌入式系统提供了灵活性和高性能。
Zynq UltraScale+ MPSoC 适用于嵌入式系统设计,特别是对于需要高度定制和硬件加速的应用。它为设计人员提供了处理器和 FPGA 的集成解决方案,以满足各种复杂系统的需求。









