linux下cmake编译opencv4
时间: 2025-03-30 20:06:18 浏览: 26
### 使用 CMake 在 Linux 环境下编译 OpenCV 4
为了在 Linux 下成功使用 CMake 编译 OpenCV 4,以下是详细的说明和操作流程:
#### 准备工作
确保已安装必要的依赖项。可以通过以下命令安装基础工具包:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install 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
```
上述命令涵盖了构建环境所需的大部分依赖项[^1]。
---
#### 获取 OpenCV 源码
可以从 GitHub 上克隆最新的 OpenCV 和 opencv_contrib(可选模块)仓库:
```bash
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.x # 切换到指定版本分支
mkdir build && cd build
```
如果需要额外的功能支持,则可以同时获取 `opencv_contrib` 库:
```bash
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.x
```
---
#### 配置 CMake 参数
进入创建的 `build` 文件夹并运行 CMake 命令来配置项目参数。例如:
```bash
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 或 Debug 构建模式。
- `-D CMAKE_INSTALL_PREFIX=/usr/local`: 定义最终安装目录,默认为 `/usr/local`。
- `-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules`: 如果需要启用扩展功能模块 (如 ARuco, DNN),则需指向 `opencv_contrib` 中的 modules 路径[^3]。
注意:对于某些特定硬件加速需求(比如 CUDA),还需要增加更多标志位,例如 `-D WITH_CUDA=ON` 来开启 GPU 支持[^4]。
---
#### 执行编译过程
完成配置之后即可启动实际编译阶段:
```bash
make -j$(nproc) # 并行利用多核CPU加快速度
sudo make install
ldconfig # 更新动态链接器缓存表
```
最后一步非常重要,它会刷新系统的共享库索引以便新安装的内容能够被正确识别加载[^2]。
---
#### 测试验证安装成果
编写简单的测试程序确认一切正常运作。下面是一个典型的例子用于检测摄像头捕获画面的能力:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
cv::VideoCapture cap(0); // 打开默认相机设备编号通常设为零
if (!cap.isOpened()) {
std::cerr << "ERROR! Unable to open camera\n";
return -1;
}
cv::Mat frame;
while(true){
cap >> frame; // 抓取下一帧图像数据
if(frame.empty()){
break; // 当前没有可用视频流结束循环退出
}
imshow("Live Feed",frame);
char c=(char)waitKey(10);
if(c==27){ // ESC 键终止演示窗口显示
break;
}
}
return 0;
}
```
保存此代码至文件名为 test.cpp 同时通过 g++ 编译执行该脚本查看效果如何呈现出来:
```bash
g++ `pkg-config --cflags --libs opencv4` -o test_opencv test.cpp
./test_opencv
```
---
阅读全文
相关推荐


















