penCV(开源计算机视觉库)是一个开源计算机视觉库,具有C++、Python 和 Java 的绑定,支持所有主要操作系统。它可以利用多核处理和功能GPU加速实时操作。
OpenCV 用于非常广泛的应用,包括医学图像分析、拼接街景图像、监控视频、检测和识别人脸、跟踪移动物体、提取 3D 模型等等。
本文介绍如何在 CentOS 8 上安装 OpenCV。若要从源安装最新稳定版本的 OpenCV,请从本教程的”源”部分向下滚动到安装 OpenCV。选择最适合您的安装选项之一。
从 CentOS 存储库安装 OpenCV
OpenCV 包可从 CentOS 8 标准存储库获得,但没有 Python 绑定。
通过键入:
sudo dnf install opencv opencv-devel
安装完成后,通过运行以下情况验证 OpenCV 库是否存在:
pkg-config --modversion opencv
3.4.1
从源安装 OpenCV
从源构建 OpenCV 库允许您拥有最新的可用版本。它将针对您的特定系统进行优化,您将完全控制生成选项。
执行以下步骤从源安装最新的 OpenCV 版本:
- 安装所需的和可选的依赖项:
sudo dnf install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel \
python3 python3-devel python3-pip cmake python3-devel python3-numpy \
gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel \
libjpeg-turbo-devel libtiff-devel tbb-devel libv4l-devel \
eigen3-devel freeglut-devel mesa-libGL mesa-libGL-devel \
boost boost-thread boost-devel gstreamer1-plugins-base
- 克隆 OpenCV 和 OpenCV 的库库:
mkdir -p ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
在编写时,github 存储库中的默认版本是版本 4.2.0。如果要安装旧版本的 OpenCV,请导航到 和 目录并运行
opencv
opencv_contrib
git checkout <opencv-version>
- 下载完成后,创建一个临时生成目录,然后切换到该目录:
cd ~/opencv_build/opencv && mkdir build && cd build
使用以下 CMake 命令配置 OpenCV 生成:
cmake3 -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
输出如下所示:
-- Configuring done -- Generating done -- Build files have been written to: /home/vagrant/opencv_build/opencv/build
- 通过运行以下命令启动编译过程:
make -j8
根据处理器修改标志。如果您不知道处理器的内核数量,可以通过键入 来找到它。
-j
nproc
编译可能需要几分钟或更多时间,具体取决于您的系统资源。
- 安装 OpenCV 库时包括:
sudo make install
- 创建到目录的符号链接文件并运行以重建库缓存。
opencv4.pc
/usr/share/pkgconfig
ldconfig
sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/
sudo ldconfig
通过键入:
pkg-config --modversion opencv4
4.3.0
- 要验证 Python 模块的运行:
cv2
python3 -c "import cv2; print(cv2.__version__)"
4.3.0-dev