在 CentOS 系统上,通过编译源码的方式安装 OpenCV,能够获取最新的功能、性能优化以及高度的自定义能力,相较于直接使用 yum
安装的预编译包,这种方法更能满足特定项目或研究的需求,本文将详细介绍在 CentOS 环境下从零开始编译安装 OpenCV 的完整流程。
准备工作
在开始编译之前,必须确保系统已安装所有必要的开发工具和依赖库,这包括 C++ 编译器、CMake 构建工具以及 OpenCV 所依赖的各种图像处理、GUI 和视频 I/O 库。
更新系统软件包到最新状态:
sudo yum update -y
安装“开发工具”集以及 CMake 和 GCC C++ 编译器:
sudo yum groupinstall "Development Tools" -y sudo yum install cmake gcc-c++ -y
OpenCV 的功能依赖于多个第三方库,下表列出了核心依赖项及其安装命令,使用表格可以更清晰地管理这些依赖。
依赖包 | 功能描述 | 安装命令 |
---|---|---|
pkgconfig | 用于获取库的编译和链接参数 | sudo yum install pkgconfig |
gtk2-devel | 提供 GUI 功能支持,用于 HighGUI 模块 | sudo yum install gtk2-devel |
libpng-devel | 支持 PNG 图像格式的读写 | sudo yum install libpng-devel |
libjpeg-turbo-devel | 支持 JPEG 图像格式的读写 | sudo yum install libjpeg-turbo-devel |
libtiff-devel | 支持 TIFF 图像格式的读写 | sudo yum install libtiff-devel |
ffmpeg-devel | 支持视频文件的读写和处理 | sudo yum install ffmpeg-devel |
python3-devel & numpy | 为 OpenCV 提供 Python 3 绑定支持 | sudo yum install python3-devel python3-numpy |
执行上述命令后,系统便具备了编译 OpenCV 的基础环境。
获取 OpenCV 源码
从 OpenCV 的官方 GitHub 仓库克隆源代码是最推荐的方式,为了获得更多扩展模块(如 SIFT、SURF 等高级算法),还需要克隆 opencv_contrib
仓库。
建议使用 git
进行克隆,这样可以方便地切换到不同的版本标签,要安装 4.5.5 版本:
# 克隆主仓库 git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.5.5 # 返回上一级目录,克隆 contrib 仓库 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.5.5
请确保 opencv
和 opencv_contrib
的版本标签保持一致,以避免潜在的兼容性问题。
CMake 配置与编译
源码准备就绪后,进入 opencv
目录,创建一个独立的 build
目录用于编译,这是一种良好的实践,可以保持源码目录的整洁。
cd opencv mkdir build && cd build
使用 CMake 生成 Makefile 文件,这是整个编译过程中最关键的一步,需要通过参数指定安装路径、附加模块路径等,一个典型的配置命令如下:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=ON ..
参数解释:
CMAKE_BUILD_TYPE=RELEASE
: 启用发布版本,包含优化,性能更好。CMAKE_INSTALL_PREFIX=/usr/local
: 指定安装目录为/usr/local
。OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules
: 指向 contrib 模块的路径,这是启用扩展功能的关键。BUILD_EXAMPLES=ON
: 编译示例程序,方便后续测试。
CMake 配置成功后,便可以开始编译,使用 make
命令,并通过 -j
参数指定并行编译的任务数,通常设置为 CPU 核心数以加快速度。
make -j$(nproc)
$(nproc)
会自动获取系统的 CPU 核心数,编译过程会持续一段时间,具体取决于 CPU 性能,编译完成后,执行安装命令:
sudo make install
配置系统环境
安装完成后,需要让系统动态链接库加载器知道新库的位置,这可以通过更新 ldconfig
缓存来实现。
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf' sudo ldconfig
可以通过 Python 来验证安装是否成功,输入以下命令:
python3 -c "import cv2; print(cv2.__version__)"
如果终端正确输出了你编译安装的 OpenCV 版本号(5.5
),则说明整个安装过程圆满成功。
相关问答 (FAQs)
问题1:编译过程非常缓慢或出现错误,该怎么办?
解答: 编译缓慢通常是正常现象,尤其是在性能较低的机器上,请确保使用 make -j$(nproc)
来充分利用多核 CPU,如果出现错误,首先应仔细检查 CMake 的输出信息,通常会提示缺少哪个依赖库或头文件,根据提示安装相应的 -devel
包即可,如果因内存不足导致编译中断,可以尝试减少并行任务数,例如使用 make -j2
。
问题2:如何彻底卸载通过源码编译的 OpenCV?
解答: 最佳方式是保留编译时生成的 build
目录,如果该目录仍在,只需进入 build
目录,执行 sudo make uninstall
命令即可卸载。build
目录已被删除,手动卸载将变得非常繁琐,需要根据 CMAKE_INSTALL_PREFIX
的设置(/usr/local
)手动删除相关文件和目录,强烈建议在安装后保留 build
目录以备将来卸载或重新配置之用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复