1. 项目概述
在计算机视觉和图像处理领域,OpenCV作为开源计算机视觉库已经成为行业标准工具。但在Linux环境下,特别是Ubuntu系统中配置OpenCV开发环境,对于初学者来说往往是个不小的挑战。本教程将手把手带你完成从零开始的环境搭建,使用VSCode作为IDE,通过CMake构建系统来编译安装OpenCV,并配置完整的开发环境。
注意:本教程基于Ubuntu 22.04 LTS系统,但同样适用于大多数Linux发行版,包括Ubuntu 20.04、18.04等版本。不同版本间可能有些许差异,我会在关键步骤中注明版本差异。
2. 环境准备与依赖安装
2.1 系统更新与基础依赖
首先确保系统是最新的,打开终端执行:
sudo apt update && sudo apt upgrade -y接下来安装编译OpenCV所需的基础工具链:
sudo apt install -y 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 libopenexr-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev这些依赖包涵盖了视频编解码、图像格式支持、Python接口等OpenCV核心功能所需的库文件。如果某些包无法找到,可以尝试添加universe和multiverse仓库:
sudo add-apt-repository universe sudo add-apt-repository multiverse sudo apt update2.2 安装VSCode与必要插件
从官网下载.deb安装包或使用以下命令安装VSCode:
sudo apt install wget wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' sudo apt update sudo apt install code安装完成后,启动VSCode并安装以下必要插件:
- C/C++ (Microsoft)
- CMake Tools
- CMake
- Python (如果使用Python接口)
3. OpenCV源码编译与安装
3.1 获取OpenCV源码
建议从GitHub克隆最新稳定版源码:
mkdir ~/opencv_build && cd ~/opencv_build git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git如果需要特定版本,可以在clone后checkout:
cd opencv git checkout 4.5.5 cd ../opencv_contrib git checkout 4.5.53.2 CMake配置
创建构建目录并运行CMake:
cd ~/opencv_build/opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON \ -D WITH_GTK=ON \ -D WITH_FFMPEG=ON \ -D WITH_CUDA=OFF \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_opencv_python3=ON \ -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..关键参数说明:
CMAKE_INSTALL_PREFIX:指定安装目录OPENCV_EXTRA_MODULES_PATH:指向contrib模块路径WITH_CUDA:是否启用CUDA加速(NVIDIA显卡)OPENCV_ENABLE_NONFREE:启用专利算法
3.3 编译与安装
配置完成后开始编译:
make -j$(nproc)-j$(nproc)参数表示使用所有CPU核心并行编译以加快速度。编译完成后安装:
sudo make install sudo ldconfig验证安装:
pkg-config --modversion opencv44. VSCode项目配置
4.1 创建CMake项目
在VSCode中创建新文件夹作为项目目录,添加以下文件结构:
project/ ├── CMakeLists.txt ├── src/ │ └── main.cpp └── build/CMakeLists.txt内容示例:
cmake_minimum_required(VERSION 3.5) project(OpenCV_Test) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(opencv_test src/main.cpp) target_link_libraries(opencv_test ${OpenCV_LIBS})4.2 配置VSCode
创建.vscode文件夹并添加以下配置文件:
settings.json:
{ "cmake.configureOnOpen": true, "cmake.buildDirectory": "${workspaceFolder}/build", "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools" }c_cpp_properties.json:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/local/include/opencv4" ], "defines": [], "compilerPath": "/usr/bin/g++", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }5. 测试与验证
5.1 简单测试程序
在main.cpp中添加以下测试代码:
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main() { Mat image = imread("test.jpg"); if(image.empty()) { cout << "Could not open or find the image" << endl; return -1; } namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", image); waitKey(0); return 0; }5.2 构建与运行
在VSCode中:
- 按Ctrl+Shift+P打开命令面板
- 输入"CMake: Configure"配置项目
- 输入"CMake: Build"构建项目
- 在终端中运行:
cd build ./opencv_test6. 常见问题与解决方案
6.1 找不到OpenCV包
如果CMake报错找不到OpenCV,尝试以下解决方案:
sudo apt install libopencv-dev python3-opencv或者在CMakeLists.txt中显式指定路径:
set(OpenCV_DIR "/usr/local/share/opencv4") find_package(OpenCV REQUIRED)6.2 视频相关功能无法使用
确保安装了FFmpeg并重新编译:
sudo apt install libavcodec-dev libavformat-dev libswscale-dev6.3 Python接口问题
如果Python无法导入cv2,检查Python包路径:
python3 -c "import cv2; print(cv2.__file__)"如果不在标准路径,可以创建符号链接:
sudo ln -s /usr/local/lib/python3.8/dist-packages/cv2 /usr/lib/python3/dist-packages/cv27. 性能优化建议
7.1 启用硬件加速
如果有Intel处理器,可以启用IPPICV:
-D WITH_IPP=ON如果有NVIDIA显卡,启用CUDA:
-D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D CUDA_ARCH_BIN=7.5 \ # 根据你的显卡计算能力设置 -D CUDA_FAST_MATH=ON7.2 精简编译
如果不需要所有模块,可以禁用部分:
-D BUILD_opencv_java=OFF \ -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_ts=OFF \ -D BUILD_opencv_dnn=OFF8. 进阶配置
8.1 多版本共存
如果需要多个OpenCV版本共存,可以修改安装路径:
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5.5然后使用时指定路径:
set(OpenCV_DIR "/usr/local/opencv-4.5.5/share/opencv4")8.2 调试符号
开发时建议添加调试符号:
-D CMAKE_BUILD_TYPE=DEBUG8.3 自定义模块
如果需要添加自定义模块,可以在OPENCV_EXTRA_MODULES_PATH中添加多个路径:
-D OPENCV_EXTRA_MODULES_PATH="path1;path2;path3"9. 项目维护
9.1 更新OpenCV
要更新OpenCV版本:
cd ~/opencv_build/opencv git pull origin master cd ../opencv_contrib git pull origin master cd ../opencv/build make clean cmake .. make -j$(nproc) sudo make install9.2 卸载OpenCV
如果需要卸载:
cd ~/opencv_build/opencv/build sudo make uninstall10. 实际开发建议
在真实项目开发中,建议:
- 使用CMake的
find_package机制而不是硬编码路径 - 为不同构建类型(Release/Debug)创建不同目录
- 使用CMake的
option()命令创建可配置选项 - 考虑使用vcpkg或conan等包管理器管理依赖
- 在团队开发中,将OpenCV作为子模块(submodule)引入
# 示例:条件编译 option(USE_OPENCV "Build with OpenCV support" ON) if(USE_OPENCV) find_package(OpenCV REQUIRED) target_link_libraries(my_target PRIVATE ${OpenCV_LIBS}) endif()