从零到一:在Ubuntu 20.04上构建坚如磐石的OpenCV C++开发环境
最近有不少朋友在尝试进入计算机视觉领域时,都被环境配置这道“门槛”给拦住了。尤其是在Linux系统下,面对终端里一串串的命令和VSCode里需要手动配置的JSON文件,新手很容易感到迷茫,甚至被几个常见的路径或依赖错误劝退。其实,一旦你理解了其中的逻辑链条,整个过程就会变得清晰而可控。这篇文章,我想从一个实践者的角度,和你一起手把手地在Ubuntu 20.04上,用VSCode搭建一个稳定、高效的OpenCV 4 C++开发环境。我们不止步于“能跑通”,更要追求配置的优雅和可维护性,同时把那些折磨人的常见报错一次性解决干净。
1. 基石:系统准备与OpenCV的编译安装
在配置编辑器之前,我们必须确保系统这个“地基”是牢固的。很多后续的诡异问题,根源往往出在最开始的系统准备和OpenCV编译环节。
1.1 系统更新与核心依赖安装
首先,打开你的终端。一个好的习惯是在进行任何大型安装前,先更新系统的软件包列表并升级现有软件。这能确保我们获取到最新的安全补丁和依赖库版本。
sudo apt update && sudo apt upgrade -y
接下来,安装编译OpenCV所必需的一系列开发工具和库。这些依赖涵盖了从编译器、构建工具到图像、视频编解码库等方方面面。一次性安装可以避免后续编译过程中频繁中断。
sudo apt install -y build-essential cmake git pkg-config
sudo apt install -y libjpeg-dev libtiff-dev libpng-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install -y libxvidcore-dev libx264-dev
sudo apt install -y libgtk-3-dev
sudo apt install -y libatlas-base-dev gfortran
sudo apt install -y python3-dev
注意:
-y参数表示自动确认安装,避免过程中需要手动输入Y。如果你希望更谨慎,可以去掉这个参数,在终端提示时再确认。
1.2 获取OpenCV源码并编译
我们选择从源码编译安装,这能带来最好的兼容性和灵活性,也方便我们启用或禁用特定模块。
首先,找一个合适的目录(比如你的家目录~),克隆OpenCV及其扩展模块(opencv_contrib)的源码。扩展模块包含了许多官方维护但不在主仓库的前沿算法。
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
为了确保编译过程的可复现性和避免版本冲突,我强烈建议切换到特定的发布版本标签,而不是使用默认的master分支。这里我们以4.5.5版本为例:
cd ~/opencv
git checkout 4.5.5
cd ~/opencv_contrib
git checkout 4.5.5
现在进入最关键的CMake配置与编译环节。我们创建一个独立的构建目录,遵循源代码与构建文件分离的最佳实践。
cd ~/opencv
mkdir build && cd build
执行CMake命令。下面的命令配置了安装路径、启用了contrib模块、优化了性能并设置了编译类型。请仔细阅读每个选项的说明:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_CUDA=OFF \
-D ENABLE_FAST_MATH=ON \
-D WITH_OPENMP=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D OPENCV_GENERATE_PKGCONFIG=ON ..
关键参数解析:
CMAKE_INSTALL_PREFIX=/usr/local: 指定安装路径为/usr/local,这是Linux系统存放本地安装软件的标准位置。OPENCV_EXTRA_MODULES_PATH

环境保姆级教程(含常见报错解决)&spm=1001.2101.3001.5002&articleId=154277534&d=1&t=3&u=35bf9cd1eaae43f6acc58563e547ab20)
338

被折叠的 条评论
为什么被折叠?



