导航

VideoPipe系列:1️⃣环境配置

Posted on 2026-01-06 21:21  7hu95b  阅读(26)  评论(0)    收藏  举报

VideoPipe

  • 环境:win10 + wsl2_ubuntu22.04
  • 思路:先配置 wsl_cuda,再编译 opencv_cuda,最后编译项目

1. wsl 安装 cuda

Windows 端的 NVIDIA 驱动能给 WSL 共享,但是 CUDA 则不能,因此需要专门的 WSL_Ubuntu 的 CUDA。

可以搜索 wsl_ubuntu cuda 12.1 到英伟达官网下载 .run 文件(4.6G)。
注意:安装过程中,不要勾选 Kernel Objects

nvidia-fs(NVIDIA GPUDirect Storage)是一种高级功能,允许 GPU 直接与 NVMe 磁盘交换数据而不经过 CPU,主要用于极高性能的数据中心场景。在 WSL2 的 Ubuntu 环境中,手动通过 .run 安装包编译这些内核模块通常会直接报错,因为 WSL 使用的是微软定制的 Linux 内核,与标准的 Linux 驱动安装逻辑不兼容。

cudnn_archive 下载 cudnn8.9.7_cuda12.x 安装包(求稳,没选择9.x版本;下载需要英伟达账号)。
安装方法:sudo dpkg -i cudnn_xx.deb会有一条添加keyring.gpg的指令,之后执行:

sudo apt update && sudo apt install libcudnn8 libcudnn8-dev libcudnn8-samples

验证方法:cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

成功标志:输出显示 MAJOR 8, MINOR 9, PATCHLEVEL 7。

2. 编译 OpenCV

针对本项目,有几个注意事项:

  • 基础依赖必须要齐,不然后期在项目启动时会遇到很多问题。
  • cuda12.1的话,OpenCV4.6 版本太低,我选择了4.10,并且GCC最高为12,系统默认为13,需要用update-alternatives来替换(不建议卸载gcc-13,防止之后执行upgrade指令时出错)。
  • CUDA_ARCH_BIN可以选择多个:6.1为1080Ti,8.6为RTX A4000,方便后期迁移。
# 1. 基础依赖
sudo apt-get install -y build-essential cmake git unzip pkg-config
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev libfreetype6-dev libharfbuzz-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libv4l-dev libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk-3-dev libqt5x11extras5
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt-get install -y python3-dev python3-numpy python3-pip
# VideoPipe 核心依赖:GStreamer
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav \
gstreamer1.0-tools gstreamer1.0-rtsp libgstrtspserver-1.0-dev

# 2. 下载并解压源码
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.10.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.10.0.zip
unzip opencv.zip && unzip opencv_contrib.zip
mv opencv-4.10.0 opencv
mv opencv_contrib-4.10.0 opencv_contrib

# 3. 编译安装
cd opencv && mkdir build && cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN="6.1;8.6" \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..

make -j$(nproc)
sudo make install && sudo ldconfig

测试:opencv_version 以及 python3 -c "import cv2; print(cv2.getBuildInformation())" | grep -i "CUDA" 正常通过即可。

3. 项目编译

编译事项:

  • 不要开-DVP_BUILD_COMPLEX_SAMPLES=ON这个选项,缺乏相关代码;
  • 要想跑通build/bin下面的用例,需要下载云盘上的vp_data。可执行文件把路径写死了,可以放在项目的 vp_data 目录下,然后在项目根目录下,运行 build/bin/xxx 即可跑通部分样例。
sudo apt install libssl-dev

mkdir build && cd build
cmake -D VP_WITH_CUDA=ON \
-D VP_WITH_LLM=ON ..