龙岩市城乡规划建设局网站,做菠菜网站多少钱,南昌网站建设公司排行榜前十,专业建站外包目录
1. 简介
2. 实例测试
2.1 实例介绍
2.2 创建工程
2.2.1 创建工程
2.2.2 获取路径
2.2.3 设置路径
2.2.4 打开工程
2.2.5 添加文件
2.2.6 启动 GUI
2.2.7 配置 csim 参数
3 常见错误
3.1 核心共享库报错
4. 总结 1. 简介
在《Vitis Accelerated Libraries …目录
1. 简介
2. 实例测试
2.1 实例介绍
2.2 创建工程
2.2.1 创建工程
2.2.2 获取路径
2.2.3 设置路径
2.2.4 打开工程
2.2.5 添加文件
2.2.6 启动 GUI
2.2.7 配置 csim 参数
3 常见错误
3.1 核心共享库报错
4. 总结 1. 简介
在《Vitis Accelerated Libraries 学习笔记--OpenCV 安装指南-CSDN博客》一文中我详尽地介绍了 OpenCV 的安装过程。尽管 Vitis Vision 库的实现本身并不依赖于 OpenCV但要运行库中的示例设计OpenCV 是必需的。此外在用户的测试平台上验证算法时也可能会用到 OpenCV。在本文中我们将深入探讨如何有效地利用 OpenCV 库来执行测试确保您的设计能够在实际环境中达到预期的性能。
本文基于你了解 OpenCV 库的基本功能和它在图像处理和计算机视觉中的应用然后我会详细说明如何将 OpenCV 集成到 Vitis Vision 库的工作流中以及如何使用 OpenCV 提供的函数来创建测试用例和验证设计。 2. 实例测试
2.1 实例介绍
以 Vitis Vision Library 中的 resize 内核为例它的主要功能是执行图像的缩放操作。在 Vitis_Libraries/vision/L1/tests/resize/ 目录下你会发现一系列文件夹这些文件夹代表了不同的测试用例用于验证和展示 resize 内核的功能
resize_NPPC1_8UC1_8UC1_AREAresize_NPPC1_8UC1_8UC1_BILINEARresize_NPPC1_8UC1_8UC1_NNresize_NPPC1_8UC3_8UC3_AREAresize_NPPC1_8UC3_8UC3_BILINEARresize_NPPC1_8UC3_8UC3_NNresize_NPPC8_8UC1_8UC1_AREAresize_NPPC8_8UC1_8UC1_BILINEARresize_NPPC8_8UC1_8UC1_NNresize_NPPC8_8UC3_8UC3_AREAresize_NPPC8_8UC3_8UC3_BILINEARresize_NPPC8_8UC3_8UC3_NN
我们先来了解一下这些文件夹的命名含义
NPPC1 或 NPPC8: 这代表每个像素时钟周期Number of Pixels Per Clock的数量。NPPC1 表示每个时钟周期处理一个像素而 NPPC8 表示每个时钟周期处理八个像素。8UC1 或 8UC3: 这指的是图像的类型。8UC1 表示 8 位无符号单通道图像而 8UC3 表示 8 位无符号三通道图像。AREA, BILINEAR, NN: 这些是 resize 函数使用的不同插值方法。AREA 是面积插值BILINEAR 是双线性插值NN 是最近邻插值。 最近邻插值Nearest Neighbor, NN: 这是最简单的插值方法。它选择最接近目标位置的源像素值来填充目标像素。这种方法的计算速度快但可能会导致图像在放大时出现块状效果。双线性插值Bilinear: 双线性插值考虑了最近的四个像素点并基于它们的距离计算加权平均值来确定新像素的值。这种方法比最近邻插值平滑但在某些情况下可能会引入模糊。面积插值Area: 面积插值是一种更复杂的方法它考虑了源图像中多个像素的区域并计算这些像素的平均值来确定目标像素的值。这种方法在缩小图像时特别有用因为它可以减少混叠效应通常能得到更平滑的结果。 每种方法都有其优点和适用场景。最近邻插值适合对计算速度要求高的场合双线性插值在保持图像细节的同时提供了平滑的效果而面积插值则在减少图像缩小时的失真方面表现出色。选择哪种插值方法取决于具体的应用需求和预期的图像质量。 2.2 创建工程
通过 cmd 和 GUI 混合操作实操下来这个方法最容易理解。
2.2.1 创建工程
cd /home/dong/Documents/test/resize
source /opt/Xilinx/Vitis_HLS/2022.1/settings64.sh
vitis_hls -gui # 在GUI中创建空白工程
通过命令行打开 Vitis HLS 界面因为之后的操作步骤要退出 GUI 回到命令行。
参考如下路径 创建成功后工程目录结构如下
resize/├── resize_kernel/│ ├── solution1/│ └── hls.app└── vitis_hls.log
创建命令后即可退出 GUI回到 bash shell。
2.2.2 获取路径
在 bash shell 中通过 bash 命令获得如下3个路径。
1. XF_PROJ_ROOT 路径
XF_PROJ_ROOT 目录为 Vison 库的参考目录在 vision 目录下运行 pwd 命令获得。
“/home/dong/Documents/vision”。 2. OPENCV_INCLUDE 路径
OPENCV_INCLUDE 是用来设置 OpenCV 头文件的路径。当你编译使用OpenCV的程序时编译器会在这个路径下查找所需的头文件。可运行如下命令获得
pkg-config --cflags opencv4 | sed s/-I//g
“/usr/local/include/opencv4” 。 3. OPENCV_LIB 目录
OPENCV_LIB 是用来设置OpenCV库文件的路径。在链接程序时链接器会在这个路径下查找OpenCV的库文件。 可运行如下命令获得
pkg-config --libs-only-L opencv4 | sed s/-L//g
“/usr/local/lib ”。 2.2.3 设置路径
进入 vitis_hls -i 赋值如下内容三行分开复制并执行。
set XF_PROJ_ROOT /home/dong/Documents/vision
set OPENCV_INCLUDE /usr/local/include/opencv4
set OPENCV_LIB /usr/local/lib clear清除窗口内容。
2.2.4 打开工程
继续在命令模式中
cd resize
open_project -reset NAME
其中NAME 为工程名称此例中工程名称为 resize_kernel。
resize/├── resize_kernel/│ ├── solution1/│ └── hls.app└── vitis_hls.log
-reset移除工程内已存在的所有数据即将工程复位。每条新的 add_files 命令都会向现有 工程添加更多文件多次添加同一个文件可能引起错乱。 get_project -name可查看是否打开工程。 2.2.5 添加文件
在 vitis lib/vision/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA 目录下找到 run_hls.tcl 命令找到 add_files 命令对应的行添加文件。
1. 加速器的实现代码文件
add_files ${XF_PROJ_ROOT}/L1/examples/resize/xf_resize_accel.cpp -cflags -I ${XF_PROJ_ROOT}/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I${XF_PROJ_ROOT}/L1/include -I ./ -D__SDSVHLS__ -stdc0x -csimflags -I ${XF_PROJ_ROOT}/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I${XF_PROJ_ROOT}/L1/include -I ./ -D__SDSVHLS__ -stdc0x
添加成功后显示
INFO: [HLS 200-10] Adding design file /home/dong/Documents/Vitis_Libraries-main/vision/L1/examples/resize/xf_resize_accel.cpp to the project
2. 测试平台文件
add_files -tb ${XF_PROJ_ROOT}/L1/examples/resize/xf_resize_tb.cpp -cflags -I ${XF_PROJ_ROOT}/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I${OPENCV_INCLUDE} -I${XF_PROJ_ROOT}/L1/include -I ./ -D__SDSVHLS__ -stdc0x -csimflags -I ${XF_PROJ_ROOT}/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I${XF_PROJ_ROOT}/L1/include -I ./ -D__SDSVHLS__ -stdc0x
添加成功后显示
INFO: [HLS 200-10] Adding test bench file /home/dong/Documents/Vitis_Libraries-main/vision/L1/examples/resize/xf_resize_tb.cpp to the project
3. 设置 Top
找到 set_top 命令对应的行
set_top resize_accel
2.2.6 启动 GUI
vitis_hls -p NAME -p在 IDE 模式下打开现有工程。 在 script.tcl 目录中可以看到之前的配置已经生效
open_project resize_kernel
set_top resize_accel
add_files ../../Vitis_Libraries_main/vision/L1/examples/resize/xf_resize_accel.cpp -cflags -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/include -I./. -D__SDSVHLS__ -stdc0x -csimflags -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/include -I./. -D__SDSVHLS__ -stdc0x
add_files -tb ../../Vitis_Libraries_main/vision/L1/examples/resize/xf_resize_tb.cpp -cflags -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I/usr/local/include/opencv4 -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/include -I. -D__SDSVHLS__ -stdc0x -Wno-unknown-pragmas -csimflags -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/tests/resize/resize_NPPC1_8UC1_8UC1_AREA -I/home/dong/Documents/Vitis_Libraries_main/vision/L1/include -I. -D__SDSVHLS__ -stdc0x -Wno-unknown-pragmas
open_solution solution1 -flow_target vivado
set_part {xck26-sfvc784-2LV-c}
create_clock -period 10 -name default
#source ./resize_kernel/solution1/directives.tcl
csim_design
csynth_design
cosim_design
export_design -format ip_catalog2.2.7 配置 csim 参数
在示例目录下找到 csim_design 命令对应的行配置参数。
if {$CSIM 1} {csim_design -ldflags -L ${OPENCV_LIB} -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -lopencv_highgui -lopencv_flann -lopencv_features2d -argv ${XF_PROJ_ROOT}/data/128x128.png
} 3 常见错误
3.1 核心共享库报错 /xx/xx/.../: error while loading shared libraries: libopencv_imgcodecs.so.4.4: cannot open shared object file: No such file or directory 意味着程序无法找到OpenCV的核心共享库文件。
解决办法
使用以下命令行查找包含共享库 libopencv_imgcodecs.so.4.4 的文件夹
sudo find / -name libopencv_imgcodecs.so.4.4
创建一个名为 /etc/ld.so.conf.d/opencv.conf 的文件并向其中写入存储二进制文件的文件夹的路径。例如我将 /usr/local/lib/ 写入我的 opencv.conf 文件。按如下方式运行命令行
sudo ldconfig -v 4. 总结
在本系列学习笔记中我们探讨了 Vitis Accelerated Libraries 和 OpenCV 的结合使用强调了 OpenCV 在运行 Vitis Vision 库示例设计和验证用户测试平台算法中的重要性。通过详细的安装指南和实例测试我们展示了如何将 OpenCV 集成到 Vitis Vision 库的工作流中并利用其强大的函数库来创建和验证测试用例。
我们还讨论了如何解决常见的错误例如找不到 OpenCV 核心共享库文件的问题确保开发环境的顺利设置。通过这些步骤使我们的工程设计在实际环境中能够达到预期的性能同时也能够更好地理解和利用 Vitis Vision 库和 OpenCV 的强大功能。