Install and Compile OpenCV with CUDA Support

1 minute read

Published:

本教程将详细介绍如何在Ubuntu系统中从源码编译安装OpenCV,并配置CUDA支持。由于OpenCV官方没有提供带CUDA支持的预编译包,我们需要从源码编译安装。

1. 安装必要依赖

首先安装所有必要的开发包:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential cmake unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libv4l-dev libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3-dev

2. 下载OpenCV源代码

下载OpenCV主包

访问 OpenCV GitHub Release页面,选择你需要的版本(建议选择4.4.0或更新版本)。

OpenCV Release页面

下载OpenCV Contrib

同样访问 OpenCV Contrib Release页面确保选择与主包相同的版本号

3. 解压源码

在home目录下执行以下命令下载并解压源码:

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/[你的版本号].zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/[你的版本号].zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-[你的版本号] opencv
mv opencv_contrib-[你的版本号] opencv_contrib

4. CMake配置

使用cmake-gui进行配置:

  1. 选择Unix Makefiles作为生成器
  2. 根据需要禁用不必要的模块:
    • opencv_face
    • opencv_world
    • 所有test模块
    • opencv_xfeature2d
    • opencv_stitching
  3. 重要:勾选 OPENCV_GENERATE_PKGCONFIG,否则无法通过pkg-config查看OpenCV版本

详细配置过程可参考:配置视频教程

最终配置参考

CMake配置1

CMake配置2

5. 编译

配置完成后开始编译:

make -j8  # 8是CPU核数,可根据实际情况调整

注意:编译过程可能需要较长时间,请耐心等待。

6. 安装

编译成功后进行安装:

sudo make install
sudo ldconfig

7. 验证安装

使用pkg-config验证安装:

pkg-config --modversion opencv4

验证结果

PKG_CONFIG说明

PKG_CONFIG的作用

pkg-config 是一个用于管理库依赖的工具,它通过库提供的 .pc 文件获取库的各种信息,包括:

  • 版本信息:检查库版本是否满足要求
  • 编译参数:获取头文件路径、宏定义等预处理参数
  • 链接参数:获取库文件位置、依赖库等链接参数
  • 依赖管理:自动处理库的依赖关系

PKG_CONFIG_PATH

pkg-config 默认搜索路径:

  • /usr/lib/pkgconfig
  • /usr/share/pkgconfig

如果库安装在自定义路径,可通过环境变量 PKG_CONFIG_PATH 添加搜索路径。

8. 测试OpenCV

创建测试程序验证OpenCV是否正常工作:

创建测试项目

mkdir OpenCV-Test
cd OpenCV-Test
touch main.cpp

测试代码

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // 读取图片
    Mat image = imread("OpenCV_Logo.png");
    
    // 检测错误
    if (image.empty())
    {
        cout << "Could not open or find the image" << endl;
        cin.get(); // 等待键盘输入
        return -1;
    }
    
    String windowName = "OpenCV Test"; // 窗口名称
    namedWindow(windowName); // 创建新窗口
    imshow(windowName, image); // 使用新窗口显示图片
    waitKey(0); // 等待键盘输入
    destroyWindow(windowName); // 关闭所有窗口
    
    return 0;
}

编译测试程序

g++ main.cpp -o test `pkg-config --cflags --libs opencv4`
./test

如果程序能正常编译并运行,说明OpenCV安装成功!

常见问题

  1. 编译失败:检查依赖是否完整安装
  2. 找不到库文件:确认 PKG_CONFIG_PATH 设置正确
  3. 版本不匹配:确保OpenCV和opencv_contrib版本一致
  4. CUDA支持:需要预先安装CUDA toolkit

通过以上步骤,你应该能够成功编译安装带CUDA支持的OpenCV.

×

微信扫码分享