Ubuntu系统编译OpenCV 4.8完全指南
OpenCV 4.8编译指南
1. 环境准备
1.1 安装基础依赖
# 更新系统包
sudo apt-get update
# 安装编译工具
sudo apt-get install -y build-essential cmake pkg-config
# 安装图像格式支持
sudo apt-get install -y \
libjpeg-dev \
libpng-dev \
libtiff-dev
# 安装视频编解码支持
sudo apt-get install -y \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libxvidcore-dev \
libx264-dev
1.2 下载源码
# 下载OpenCV 4.8.0源码
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.8.0.zip
unzip opencv.zip
cd opencv-4.8.0
# 创建构建目录
mkdir build && cd build
2. 编译配置
2.1 基础精简配置
# 基础精简版本,关闭不必要的功能
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_apps=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D WITH_QT=OFF \
-D WITH_GTK=OFF \
-D WITH_OPENGL=OFF \
-D WITH_CUDA=OFF \
-D WITH_OPENCL=OFF \
-D WITH_EIGEN=OFF \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_IPP=OFF \
-D WITH_TBB=OFF \
-D WITH_OPENMP=OFF \
-D BUILD_SHARED_LIBS=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
..
2.2 性能优化配置
# 启用优化选项的配置
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_IPP=ON \
-D WITH_EIGEN=ON \
-D CPU_BASELINE=SSE4_2,AVX2 \
-D CPU_DISPATCH=SSE4_2,AVX2 \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_SHARED_LIBS=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
..
3. 编译安装
3.1 编译
# 使用多核心编译
make -j$(nproc)
3.2 安装
# 安装库文件
sudo make install
# 更新系统库缓存
sudo ldconfig
4. 验证安装
4.1 检查版本和库
# 检查OpenCV版本
pkg-config --modversion opencv4
# 检查编译选项
pkg-config --cflags --libs opencv4
# 检查库文件
ls -l /usr/local/lib/libopencv*
4.2 测试示例
// 创建测试文件 test.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat img = cv::Mat::zeros(480, 640, CV_8UC3);
if (img.empty()) {
std::cout << "Failed to create image" << std::endl;
return -1;
}
std::cout << "OpenCV test successful" << std::endl;
return 0;
}
// 编译测试文件
g++ test.cpp -o test `pkg-config --cflags --libs opencv4`
5. 常见问题解决
5.1 编译错误处理
# 清理构建目录
rm -rf build/*
cd build
# 重新配置并编译
cmake ..
make clean
make -j$(nproc)
5.2 依赖问题解决
# 检查缺失的依赖
ldd /usr/local/lib/libopencv_*
# 安装缺失的开发库
sudo apt-get install -y \
libgtk-3-dev \
libatlas-base-dev \
libgtkglext1-dev
6. 性能优化
6.1 编译优化
# 开启优化标志
export CFLAGS="-O3 -march=native"
export CXXFLAGS="-O3 -march=native"
# 使用特定的CPU指令集
cmake -D CPU_BASELINE=SSE4_2,AVX2 \
-D CPU_DISPATCH=SSE4_2,AVX2,AVX512_SKX \
..
6.2 运行时优化
# 设置线程数
export OMP_NUM_THREADS=$(nproc)
# 设置CPU亲和性
taskset -c 0-3 ./your_opencv_app
7. 清理和维护
7.1 清理编译文件
# 清理构建目录
cd build
make clean
# 完全清理
cd ..
rm -rf build
7.2 卸载OpenCV
# 从安装目录卸载
cd build
sudo make uninstall
# 手动清理残留文件
sudo rm -rf /usr/local/include/opencv4
sudo rm -rf /usr/local/lib/libopencv*
sudo rm -rf /usr/local/lib/pkgconfig/opencv4.pc
8. 最佳实践
8.1 编译建议
- 根据实际需求选择编译选项
- 在开发环境中保留调试信息
- 在生产环境中使用优化编译
- 定期更新到最新的稳定版本
- 保存成功的编译配置
8.2 性能建议
- 使用适合目标平台的CPU指令集
- 合理配置线程数和内存使用
- 针对特定应用场景优化参数
- 进行性能测试和监控
- 定期检查系统资源使用情况