Vitis HLS集成OpenCV:从源码编译到工程配置实战

张开发
2026/4/16 20:19:24 15 分钟阅读

分享文章

Vitis HLS集成OpenCV:从源码编译到工程配置实战
1. 为什么需要手动集成OpenCV到Vitis HLS最近在做一个FPGA图像处理项目时发现新版的Vitis HLS竟然不自带OpenCV支持了。这让我很头疼毕竟OpenCV是图像处理领域的瑞士军刀没有它很多功能实现起来会非常麻烦。经过一番摸索终于搞定了从源码编译到工程配置的全流程这里把踩过的坑和解决方案都分享给大家。Vitis HLS作为Xilinx推出的高层次综合工具能够将C代码直接转换为硬件描述语言。但在2020版本之后官方移除了内置的OpenCV支持这意味着我们需要手动编译适合HLS环境的OpenCV库。这个过程涉及到交叉编译、环境变量配置、编译器标志设置等多个环节任何一个步骤出错都可能导致最终集成失败。2. 准备OpenCV源码和编译环境2.1 获取OpenCV源码首先需要从OpenCV官网下载源码。建议选择4.5.x版本因为这个版本与Vitis HLS 2021.2兼容性较好。下载完成后解压到本地目录我习惯放在D:\opencv\opencv_hls这样的路径下方便管理。注意不要使用最新版的OpenCV某些新特性可能不被Vitis HLS支持2.2 安装必要的编译工具编译OpenCV需要以下工具CMake 3.5以上版本MinGW-w64建议使用x86_64-8.1.0版本Vitis HLS 2021.2或其他你正在使用的版本确保这些工具都已正确安装并添加到系统PATH中。可以通过在命令行输入cmake --version和gcc --version来验证安装是否成功。3. 使用CMake编译OpenCV3.1 配置CMake参数在OpenCV源码目录下新建一个build_cmake文件夹然后打开CMake GUI工具进行配置。关键配置参数如下source code: D:/opencv/opencv_hls/opencv_hls build directory: D:/opencv/opencv_hls/opencv_hls/build_cmake generator: MinGW Makefiles点击Configure后需要设置以下选项BUILD_opencv_world: OFF避免生成单个大库文件BUILD_SHARED_LIBS: OFF生成静态库BUILD_EXAMPLES: OFF不编译示例BUILD_TESTS: OFF不编译测试WITH_OPENCL: OFF关闭OpenCL支持3.2 执行编译配置完成后点击Generate生成Makefile。然后打开命令行进入build_cmake目录执行mingw32-make -j8编译过程可能需要30分钟到1小时取决于你的电脑性能。编译完成后执行安装命令mingw32-make install这会将编译好的库文件安装到build_cmake/install目录下。4. 配置系统环境变量编译完成后需要设置几个关键环境变量让Vitis HLS能够找到OpenCV库OPENCV_INCLUDE: 指向include目录D:\opencv\opencv_hls\opencv_hls\build_cmake\install\includeOPENCV_LIB: 指向库文件目录D:\opencv\opencv_hls\opencv_hls\build_cmake\install\x64\mingw\libLD_LIBRARY_PATH: 添加库文件路径D:\opencv\opencv_hls\opencv_hls\build_cmake\install\x64\mingw\libPath: 添加两个路径D:\opencv\opencv_hls\opencv_hls\build_cmake\install\x64\mingw\bin D:\opencv\opencv_hls\opencv_hls\build_cmake\install\x64\mingw\lib设置完成后建议重启电脑使环境变量生效。5. 配置Vitis HLS工程5.1 下载Vitis Vision库从Xilinx的GitHub仓库下载Vitis Vision库选择与你的Vitis HLS版本匹配的分支。例如2021.2版本就选择2021.2分支。下载后解压到本地目录。5.2 创建Vitis HLS工程新建工程后添加你的C源文件和测试文件。然后右键点击工程名选择C/C Settings进行配置。5.3 设置编译器标志在Synthesis配置中设置Top Function后添加以下CFLAGS-ID:/Xilinx/Vitis_Libraries-2021.2/vision/L1/include在Simulation配置中添加-ID:/opencv/opencv_hls/opencv_hls/build_cmake/install/include -stdc0x5.4 设置链接器标志最后在Linker Flags中添加-LD:/opencv/opencv_hls/opencv_hls/build_cmake/install/x64/mingw/lib -llibopencv_core455 -llibopencv_imgcodecs455 -llibopencv_imgproc455注意库文件名中的455对应OpenCV 4.5.5版本如果你使用其他版本需要相应调整。6. 验证集成是否成功创建一个简单的测试程序读取一张图片并显示其尺寸#include opencv2/core.hpp #include opencv2/imgcodecs.hpp void test_opencv(const char* image_path) { cv::Mat img cv::imread(image_path); int width img.cols; int height img.rows; // 其他处理... }如果能够正常编译并运行说明OpenCV已经成功集成到Vitis HLS中。我在实际项目中遇到最多的问题是路径设置错误特别是Windows下的斜杠方向问题建议仔细检查每个路径是否正确。

更多文章