告别命令行:用 CMake-GUI 在 Ubuntu 18.04 上可视化编译 OpenCV 3.4.10 + Contrib 模块
告别命令行:用 CMake-GUI 在 Ubuntu 18.04 上可视化编译 OpenCV 3.4.10 + Contrib 模块
对于许多开发者而言,编译开源库往往意味着面对一堆晦涩的命令行参数和冗长的终端输出。尤其是像 OpenCV 这样功能丰富但配置复杂的计算机视觉库,传统的命令行编译方式常常让人望而生畏。本文将介绍一种更友好的替代方案——使用 CMake-GUI 工具在 Ubuntu 18.04 上可视化编译 OpenCV 3.4.10 及其 Contrib 模块,让编译过程变得直观可控。
1. 环境准备与源码获取
在开始编译之前,我们需要确保系统环境已经准备就绪。首先检查并安装必要的依赖项:
sudo apt update sudo apt install build-essential cmake cmake-qt-gui git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev接下来获取 OpenCV 3.4.10 及其 Contrib 模块的源码。建议在用户主目录下创建一个专门的工作目录:
mkdir ~/opencv_build && cd ~/opencv_build wget -O opencv.zip https://codeload.github.com/opencv/opencv/zip/3.4.10 wget -O opencv_contrib.zip https://codeload.github.com/opencv/opencv_contrib/zip/3.4.10 unzip opencv.zip unzip opencv_contrib.zip mv opencv-3.4.10 opencv mv opencv_contrib-3.4.10 opencv_contrib这样的目录结构清晰明了:
~/opencv_build/ ├── opencv/ # 主源码目录 └── opencv_contrib/ # 扩展模块目录2. 使用 CMake-GUI 配置编译参数
与传统命令行方式不同,CMake-GUI 提供了图形化的配置界面。在终端中执行以下命令启动 GUI:
cd ~/opencv_build/opencv mkdir build && cd build cmake-gui ..界面启动后,你会看到以下关键区域:
- 源码路径:自动填充为
~/opencv_build/opencv - 构建路径:自动填充为
~/opencv_build/opencv/build - 配置选项面板:显示所有可配置参数
点击"Configure"按钮,选择"Unix Makefiles"作为生成器,保持其他选项默认,然后点击"Finish"开始初始配置。
配置完成后,界面会显示红色高亮的配置项。我们需要重点关注以下几个关键参数:
| 参数名称 | 推荐值 | 说明 |
|---|---|---|
BUILD_opencv_world | ON | 将所有模块打包成单个库文件 |
CMAKE_BUILD_TYPE | RELEASE | 生成优化后的发布版本 |
OPENCV_EXTRA_MODULES_PATH | ~/opencv_build/opencv_contrib/modules | Contrib 模块路径 |
WITH_QT | ON | 启用 Qt 支持(可选) |
WITH_OPENGL | ON | 启用 OpenGL 支持(可选) |
提示:在填写
OPENCV_EXTRA_MODULES_PATH时,可以直接点击右侧的"..."按钮浏览选择目录,避免手动输入出错。
3. 解决常见配置问题
在配置过程中可能会遇到一些典型问题,以下是解决方案:
问题1:Python环境冲突
如果系统安装了多个Python环境(如Anaconda),可能会报类似错误:
Cannot generate a safe runtime search path for target opencv_world解决方法:
- 暂时注释掉
~/.bashrc中Anaconda的环境变量 - 执行
source ~/.bashrc更新环境 - 重新运行 CMake-GUI
问题2:缺失依赖项
常见的缺失依赖错误可以通过安装以下包解决:
sudo apt install libtbb-dev libeigen3-dev libopenblas-dev liblapack-dev libgstreamer-plugins-base1.0-dev配置完成后,点击"Generate"按钮生成Makefile。如果一切顺利,你将看到"Configuring done"和"Generating done"的提示。
4. 编译与安装
虽然配置使用了图形界面,但编译过程仍需在终端完成。在build目录下执行:
make -j$(nproc) # 使用所有CPU核心并行编译 sudo make install编译时间取决于硬件性能,通常需要15-30分钟。完成后,OpenCV将被安装到/usr/local目录下。
最后配置系统环境:
- 添加库路径:
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf' sudo ldconfig- 设置pkg-config路径(添加到
~/.bashrc末尾):
echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> ~/.bashrc source ~/.bashrc5. 验证安装
创建一个简单的测试程序验证安装是否成功:
// test_opencv.cpp #include <opencv2/opencv.hpp> #include <iostream> int main() { cv::Mat image = cv::imread("test.jpg"); if(image.empty()) { std::cout << "Could not open image" << std::endl; return -1; } cv::imshow("Display window", image); cv::waitKey(0); return 0; }编译并运行测试程序:
g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv` ./test_opencv如果能看到图像窗口弹出,说明OpenCV已成功安装并正常工作。
