Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。

1、安装opencv依赖
安装时最好更换一下源。
sudo apt-get -y update
sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy
sudo apt-get -y install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev
sudo apt-get -y install zlib1g-dev libwebp-dev libtiff5-dev libopenexr-dev libgdal-dev libv4l-dev libxine2-dev
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get -y update
sudo apt-get -y install libjasper1 libjasper-dev libdc1394-dev
sudo apt-get -y install aptitude
sudo aptitude -y install libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgphoto2-dev


****切记先不要安装Anaconda,如果安装了,需要先把它的路径环境路径先注释掉!!!****

2、编译opencv库
2.1 CPU 库流程
准备opencv4.5.1代码
cd opencv4.5.1
mkdir build
cd build

//CPU 库编译
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_FFMPEG=OFF -DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/soft/opencv451_cpu -DBUILD_opencv_world=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_GSTREAMER=ON -DBUILD_TIFF=ON -DBUILD_TBB=ON -DWITH_EIGEN=ON -DWITH_OPENGL=ON -DBUILD_opencv_python_tests=OFF -DBUILD_opencv_python_bindings_generator=OFF ..


2.2 //GPU 库流程

2.2.1、下载cuda版本:cuda_11.8.0_520.61.05_linux.run
2.2.2、下载cudnn版本:cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
**安装cuda和cudnn,参考:https://blog.youkuaiyun.com/weixin_49777848/article/details/131684172**

2.2.3、添加Cuda路径
gedit ~/.bashrc
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

2.2.4、添加cudnn路径
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

2.2.5//GPU库编译
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_FFMPEG=OFF -DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/soft/opencv451_cuda -DBUILD_opencv_world=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_GSTREAMER=ON -DBUILD_TIFF=ON  -DWITH_EIGEN=ON -DWITH_OPENGL=ON -DENABLE_FAST_MATH=ON -DWITH_CUDA=ON -DCUDA_FAST_MATH=ON -DCUDA_ARCH_BIN=7.5 -DWITH_CUBLAS=ON -DWITH_CUDNN=ON -DWITH_V4L=ON -DOPENCV_DNN_CUDA=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib4.5.1/modules -DBUILD_opencv_python_tests=OFF -DBUILD_opencv_python_bindings_generator=OFF ..

make -j24
make install

2.3 可能错误:
错误一:
/sbin/ldconfig.real: /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
解决:
cd /usr/local/cuda-11.8/targets/x86_64-linux/lib/
sudo ln -sf libcudnn_ops_infer.so.8.6.0 libcudnn_ops_infer.so.8.6
sudo ln -sf libcudnn_ops_infer.so.8.6 libcudnn_ops_infer.so.8
其他的一样的操作

3、例子调用(自己测试用,不方便公开)
3.1 把编译好的opencv lib和include库,在/soft/opencv451_cpu/ 和 /soft/opencv451_cuda/目录下,需要拷贝到测试用例对应的lib和include
如果用例在/home/VideoDiagnose下:
sudo cp -r /soft/opencv451_cpu/include/opencv4/opencv2 /home/VideoDiagnose/include
sudo cp /soft/opencv451_cpu/lib/libopencv_world* /home/VideoDiagnose/lib
cd /home/VideoDiagnose
sudo chmod -R 777 *

3.2 添加lib运行环境
sudo  -i 先进入root模式
gedit /etc/ld.so.conf.d/VDXN.conf
添加,需要根据自己的实际路径添加:
/home/VideoDiagnose/lib  
使其生效:
ldconfig

3.3 进入AlgTest目录下:
make
把生成的algTest拷贝到lib下,进入lib测试目录下,执行:
./algTest  ./testData/9_对比度异常/

3.4 缺失的库在export_lib下

4. opencv4.5.1代码下载地址:

链接: https://pan.baidu.com/s/1jZ-e3r__eZMXShy2XdLucA 提取码: 5zin

### 安装支持 CUDA 的 OpenCV 要在 Ubuntu 22.04 上安装带有 CUDA 支持的 OpenCV,需要完成以下几个方面的操作: #### 1. 配置开发环境 在开始之前,确保系统已更新至最新状态并安装必要的构建工具依赖项。 ```bash sudo apt update && sudo apt upgrade -y sudo apt-get install build-essential cmake git pkg-config \ libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev \ libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev \ libtiff-dev gfortran openexr libatlas-base-dev python3-dev \ python3-numpy libtbb2 libtbb-dev libdc1394-22-dev[^1] ``` 这些依赖项涵盖了 OpenCV 构建过程中可能需要用到的核心功能模块。 --- #### 2. 下载 OpenCV opencv_contrib 源码 下载官方发布的 OpenCV `opencv_contrib` 库源码包。这里假设使用的版本为 `4.x`。 ```bash OPENCV_VERSION="4.8.0" wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-${OPENCV_VERSION} opencv mv opencv_contrib-${OPENCV_VERSION} opencv_contrib rm *.zip ``` 上述命令会创建两个文件夹:`opencv` `opencv_contrib`[^2]。 --- #### 3. 安装 NVIDIA CUDA 工具链 为了使 OpenCV 能够利用 GPU 加速,需先安装 CUDA 并验证其可用性。 ##### (a) 安装 CUDA 按照官方文档或引用中的方法安装适合系统的 CUDA 版本[^3]。例如: ```bash sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-<driver-version> distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt update sudo apt install cuda ``` 完成后重启计算机以加载新的驱动程序。 ##### (b) 验证 CUDA 是否正常工作 运行以下命令测试 CUDA 功能是否生效: ```bash nvcc --version cat /usr/local/cuda/version.txt ``` 如果显示正确的 CUDA 版本号,则说明安装成功。 ##### (c) 安装 cuDNN 从 NVIDIA 官方网站获取对应版本的 cuDNN 文件,并将其解压到指定路径下。执行如下指令设置权限并验证版本: ```bash sudo cp include/cudnn*.h /usr/local/cuda/include/ sudo cp lib/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 ``` 确认输出中包含有效的 cuDNN 主次版本号。 --- #### 4. 编译 OpenCV 进入先前提取好的 OpenCV 目录,在其中建立一个新的子目录用于存储编译产物。 ```bash cd ~/opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D WITH_CUDA=ON \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D WITH_CUBLAS=1 \ -D BUILD_EXAMPLES=OFF .. make -j$(nproc) sudo make install sudo ldconfig ``` 此过程通过启用 `-D WITH_CUDA=ON` 参数告知 CMake 使用本地安装的 CUDA SDK 来优化性能;同时引入额外的功能模块(来自 `opencv_contrib`),从而扩展核心库的能力范围。 --- #### 5. 测试安装结果 最后编写一段简单的 Python 或 C++ 程序来检测新部署的 OpenCV 实例能否识别硬件加速特性。 Python 示例脚本: ```python import cv2 as cv print(cv.__version__) if cv.cuda.getCudaEnabledDeviceCount() > 0: print("CUDA support is enabled.") else: print("No CUDA device detected or disabled during compilation.") ``` C++ 示例代码片段: ```cpp #include <opencv2/core.hpp> #include <iostream> int main(int argc, char **argv){ std::cout << CV_VERSION << "\n"; int count = cv::cuda::getCudaEnabledDeviceCount(); if(count>0){ std::cout<<"CUDA support is enabled.\n"; } else{ std::cerr<<"No CUDA devices found!\n"; } return 0; } ``` 以上两段示例均能帮助判断当前环境中是否存在有效激活的 GPU 设备以及它们是否被正确集成到了所选框架里。 --- ### 总结 综上所述,整个流程涉及基础软件栈搭建、图形处理单元驱动适配及其附属组件装配等多个环节。每一步都至关重要,任何遗漏都有可能导致最终目标无法达成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值