linux编译opencvcontrib
时间: 2025-05-02 22:44:27 浏览: 18
### 如何在Linux上编建OpenCV与Contrib模块
#### 准备工作
为了成功编译 OpenCV 和其扩展模块(OpenCV Contrib),需要安装必要的依赖项并准备环境。以下是所需的主要工具和库[^1]:
- CMake (建议版本 >= 3.10)
- GCC 或 Clang 编译器
- Python 开发包(可选)
- GTK 库及其开发头文件
- pkg-config 工具
可以通过以下命令来安装基础依赖项(以 Ubuntu 系统为例):
```bash
sudo apt update && sudo apt upgrade
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config \
libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
```
对于 CentOS 用户,则可以参考类似的步骤,通过 `yum` 来完成依赖的安装[^2]。
---
#### 下载 OpenCV 和 OpenCV Contrib 源码
从官方 GitHub 存储库获取最新稳定版的 OpenCV 及其 contrib 扩展模块:
```bash
# 创建一个工作目录用于存储源代码
mkdir ~/opencv_build && cd ~/opencv_build
# 克隆 OpenCV 的主仓库
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout <version> # 替换<version>为你希望使用的具体版本号,比如4.x.x
# 返回到上级目录克隆 contrib 模块
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout <same_version_as_opencv>
```
注意:确保两个项目的分支或标签保持一致,即它们属于同一版本系列。
---
#### 配置构建选项
创建一个新的子目录作为构建目标路径,并初始化配置过程:
```bash
cd ~/opencv_build/opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
```
上述命令中的参数解释如下:
- `-D CMAKE_BUILD_TYPE=Release`: 设置为 Release 构建模式优化性能.
- `-D CMAKE_INSTALL_PREFIX=/usr/local`: 定义最终安装位置,默认通常是 `/usr/local`.
- `-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules`: 告诉CMake在哪里找到contrib附加组件.
如果一切正常,CMake应该会报告检测结果以及启用哪些特性(包括来自contrib的部分).
---
#### 编译与安装
一旦确认无误就可以启动实际的编译流程了:
```bash
make -j$(nproc) # 使用所有可用CPU核心加速编译进程
sudo make install # 把生成好的二进制文件复制至指定前缀下的适当位置
sudo ldconfig # 更新动态链接器缓存以便立即生效新加入的共享对象(.so files).
```
验证是否成功生成 Java 绑定文件如 `libopencv_java*.so`,它通常位于类似于 `/opt/build/lib` 这样的地方[^3].
最后赋予脚本执行权限之前先检查该SO是否存在正确的位置后再继续操作chmod指令部分即可完成整个设置!
---
### 总结
以上就是在 Linux 平台上针对特定需求定制化地搭建带有额外功能支持版本的 OpenCV 方法概述;涵盖了前期准备工作直至后期部署各阶段要点说明.
阅读全文
相关推荐


















