在Linux系统中编译OpenCV 3.0需要经历环境准备、源码获取、CMake配置、编译安装及环境变量配置等步骤,以下是详细流程:
环境准备
编译OpenCV 3.0需先安装必要的依赖库和工具,包括编译器、构建工具及OpenCV所需的第三方库(如图像处理、视频编解码等支持),以Ubuntu/Debian系统为例,通过以下命令安装基础依赖:
sudo apt update sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
若需支持Python接口,还需安装Python开发库:
sudo apt install python2.7-dev python3.5-dev # 根据系统Python版本选择
依赖库说明:
| 依赖库名称 | 作用说明 |
|——————|——————————|
| build-essential | 包含gcc、g++等编译工具 |
| cmake | 项目构建工具 |
| libgtk2.0-dev | GUI支持(如图像显示窗口) |
| libavcodec-dev | 视频编解码支持(FFmpeg) |
| libjpeg-dev | JPEG图像格式支持 |
| libpng-dev | PNG图像格式支持 |
获取OpenCV 3.0源码
OpenCV 3.0的官方源码可通过GitHub或OpenCV官网下载,这里以GitHub为例:
# 创建工作目录并进入 mkdir -p ~/opencv3_build && cd ~/opencv3_build # 克隆OpenCV 3.0.0源码(tag为3.0.0) git clone https://github.com/opencv/opencv.git -b 3.0.0 git clone https://github.com/opencv/opencv_contrib.git -b 3.0.0 # 可选,包含额外模块
若网络较慢,也可从OpenCV官网下载0.0源码tar包,通过tar -xvf opencv-3.0.0.tar.bz2
解压。
创建编译目录并配置CMake
为避免污染源码目录,需在源码外创建独立编译目录,并通过CMake生成Makefile:
# 进入OpenCV源码目录 cd opencv # 创建编译目录 mkdir build && cd build # 运行CMake配置(关键参数说明见下表) cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D WITH_IPP=OFF -D WITH_TBB=ON -D BUILD_EXAMPLES=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules .. # 若下载了contrib模块
CMake常用参数说明:
| 参数 | 作用说明 |
|——————————-|————————————————————————–|
| CMAKE_BUILD_TYPE=Release | 编译类型(Release为发布版,性能优化;Debug为调试版,包含调试信息) |
| CMAKE_INSTALL_PREFIX=/usr/local| 指定安装路径(默认为/usr/local,也可自定义如/home/user/opencv3) |
| WITH_CUDA=OFF | 是否启用CUDA加速(需NVIDIA GPU及对应驱动,关闭则仅CPU编译) |
| WITH_OPENGL=ON | 是否启用OpenGL支持(3D渲染等场景需要) |
| OPENCV_EXTRA_MODULES_PATH | 指定contrib模块路径(包含人脸识别、立体匹配等扩展功能) |
编译与安装
配置完成后,执行make
命令开始编译(根据CPU核心数可使用-j
参数加速,如-j4
使用4核并行):
# 编译(时间较长,约10-30分钟,取决于CPU性能) make -j$(nproc) # nproc获取CPU核心数,或直接使用make -j4 # 安装(需root权限) sudo make install
编译过程中若报错(如缺少依赖库),需根据错误提示安装对应库,例如缺少libjasper-dev
则安装sudo apt install libjasper-dev
,然后重新运行cmake
和make
。
配置环境变量
安装完成后,需将OpenCV库路径添加到系统动态链接库配置中,以便程序运行时能找到依赖库:
# 临时生效(当前终端有效) export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH # 永久生效(写入~/.bashrc) echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
测试安装是否成功
编写一个简单的C++程序测试OpenCV功能,如读取并显示图片:
# 创建测试文件 cd ~ && gedit test_opencv.cpp
输入以下代码:
#include <opencv2/opencv.hpp> int main() { cv::Mat image = cv::imread("/usr/share/pixmaps/ubuntu-logo.png"); // 替换为本地图片路径 if (image.empty()) { std::cerr << "Could not read the image!" << std::endl; return 1; } cv::imshow("OpenCV Test", image); cv::waitKey(0); return 0; }
编译并运行(需链接OpenCV库):
# 编译(使用pkg-config自动获取库路径) g++ test_opencv.cpp -o test_opencv $(pkg-config --cflags --libs opencv) # 运行 ./test_opencv
若弹出显示图片的窗口,说明OpenCV 3.0编译安装成功。
相关问答FAQs
Q1: 编译时报错“fatal error: stdlib.h: No such file or directory”如何解决?
A: 该错误表明缺少C标准库开发头文件,需安装build-essential工具包:
sudo apt install build-essential
若仍报错,可能是编译器未正确配置,可通过gcc --version
和g++ --version
检查是否安装成功。
Q2: 运行程序时报错“libopencv_core.so.3.0: cannot open shared object file”如何解决?
A: 此错误为系统无法找到OpenCV动态库,需确认环境变量是否配置正确:
- 检查
LD_LIBRARY_PATH
是否包含OpenCV库路径(如/usr/local/lib
):echo $LD_LIBRARY_PATH
- 若未包含,可通过临时生效(
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
)或永久生效(写入~/.bashrc
)解决; - 若已配置仍报错,可能是库文件权限问题,使用
sudo ldconfig
更新共享库缓存。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14163.html