Install and Compile OpenCV with CUDA Support
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 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进行配置:
- 选择Unix Makefiles作为生成器
- 根据需要禁用不必要的模块:
- opencv_face
- opencv_world
- 所有test模块
- opencv_xfeature2d
- opencv_stitching
- 重要:勾选
OPENCV_GENERATE_PKGCONFIG
,否则无法通过pkg-config查看OpenCV版本
详细配置过程可参考:配置视频教程
最终配置参考
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安装成功!
常见问题
- 编译失败:检查依赖是否完整安装
- 找不到库文件:确认
PKG_CONFIG_PATH
设置正确 - 版本不匹配:确保OpenCV和opencv_contrib版本一致
- CUDA支持:需要预先安装CUDA toolkit
通过以上步骤,你应该能够成功编译安装带CUDA支持的OpenCV.