在linux编译opencv摘要

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值