1. 安装依赖项
首先,确保系统已安装必要的依赖库(Ubuntu):
sudo apt update
sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
在CentOS下,需要改为:
sudo yum install gcc gcc-c++ python3-devel
不然后面cmake时,很有可能会报如下错误:
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred!
2. 下载 OpenCV 源码
从 GitHub 克隆 OpenCV 和 OpenCV contrib(可选扩展模块):
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git # 可选
3. 创建构建目录并配置
cd opencv
mkdir build && cd build
使用 CMake 配置编译选项(基础编译):
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 BUILD_EXAMPLES=ON \
..
如果包含 opencv_contrib,添加以下参数:
cmake -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
4. 编译和安装
使用多线程编译(根据 CPU 核心数调整 -j 参数):
make -j$(nproc)
sudo make install
5. 配置环境(可选)
更新动态链接库缓存:
sudo ldconfig
验证安装
pkg-config --modversion opencv4
# 或运行一个 Python 测试
python3 -c "import cv2; print(cv2.__version__)"
常见问题解决
缺少依赖项:根据 CMake 输出的错误提示安装对应依赖。
CUDA 支持:添加 -D WITH_CUDA=ON(需提前安装 CUDA Toolkit)。
指定 Python 版本:通过 -D PYTHON3_EXECUTABLE=/usr/bin/python3.x 明确路径。
快速安装(不推荐开发使用)
对于 Ubuntu/Debian 用户可以直接安装预编译版本:
sudo apt install libopencv-dev python3-opencv
如果需要最新版本或自定义功能,建议从源码编译。编译时间取决于硬件配置(通常 10-30 分钟)。
如果在测试python时,出现如下的错误:
# python3 -c "import cv2; print(cv2.__version__)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib64/python3.11/site-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/usr/local/lib64/python3.11/site-packages/cv2/__init__.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
如果出现上面这样的报错,可以安装libGL
安装 libGL
(适用于大多数 Linux 发行版)
-
Ubuntu/Debian:
sudo apt update sudo apt install libgl1
-
CentOS/RHEL/Fedora:
sudo dnf install mesa-libGL # Fedora/CentOS 8+
或
sudo yum install mesa-libGL # CentOS 7
-
Arch Linux:
sudo pacman -S mesa