Python
预编译Python独立版
CentOS7 编译安装opencv-4.10.0
自定义Python编译安装路径
本文档使用 MrDoc 发布
-
+
home page
CentOS7 编译安装opencv-4.10.0
opencv-4.6.0 所需的必要依赖和版本: - Python -3.0 以上 - gcc g++ -8.0 以上 - cmake -3.0 以上 ## 1. 升级gcc编译器 安装 SCL 源 因CentOS7 现已停止维护和支持,需改为归档源 ``` tee > /etc/yum.repos.d/CentOS-SCLo.repo << EOF # CentOS-SCLo-SCLGROUP.repo # # Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more # information [centos-sclo-SCLGROUP] name=CentOS-$releasever - SCLo SCLGROUP baseurl=https://vault.centos.org/centos/$releasever/sclo/$basearch/rh/ gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo EOF ``` 安装 gcc8 g++8,并设置环境变量 ``` yum install -y devtoolset-8-gcc* echo 'source /opt/rh/devtoolset-8/enable' >> /etc/profile source /etc/profile ``` 查看gcc、g++版本 ``` gcc --version g++ --version ``` ## 2. 安装python3 安装 Python 3.6.8 ,也可以安装指定版本。 官网地址: https://www.python.org ``` yum install -y python3 python3-devel python3-libs python3-tools wget unzip vim ``` 安装升级 python-pip ``` python3 -m ensurepip python3 -m pip install --upgrade pip ``` 查看版本 ``` python3 -V ``` ## 3. 安装 cmake-3.20.0 > ⚠️ cmake 必须依赖 openssl ``` yum install -y openssl openssl-devel ``` 获取CMake源码包 ``` wget -O cmake.tar.gz https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz tar -zvxf cmake.tar.gz ``` 进入目录进行编译安装 ``` cd /root/cmake-3.20.0/ ./bootstrap --prefix=/usr/local/cmake make && make install ``` 配置CMake环境变量 ``` echo 'PATH=$PATH:/usr/local/cmake/bin' >> /etc/profile source /etc/profile ``` 查看CMake版本信息 ``` cmake --version ``` 安装 opencv 依赖 ,如果需要生成 Java 相关的 .jar.so链接库,必须安装ant依赖 ``` yum install -y zlib-devel ant opencv-python libjpeg-turbo-devel libpng-devel \ libtiff-devel jasper-devel openjpeg2-devel ffmpeg-devel gstreamer1-devel \ gstreamer1-plugins-base-devel freetype-devel harfbuzz-devel tesseract-devel ``` 安装完成后,会自动安装 open-jdk1.8,建议卸载 查看已安装的jdk包并卸载 ``` rpm -qa | grep jdk rpm -e --nodeps copy-jdk-configs-3.3-11.el7_9.noarch \ java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64 \ java-1.8.0-openjdk-headless-1.8.0.382.b05-1.el7_9.x86_64 \ java-1.8.0-openjdk-devel-1.8.0.382.b05-1.el7_9.x86_64 ``` ## 4. 安装opencv 下载 opencv 源码包 ``` wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/refs/tags/4.10.0.tar.gz wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/refs/tags/4.10.0.tar.gz tar -zxvf opencv.tar.gz tar -zxvf opencv_contrib.tar.gz ``` 创建并进入 build 目录进行cmake参数编译 ``` cd opencv-4.10.0 && mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.10.0/modules \ -D ENABLE_CXX11=ON -D WITH_1394=OFF \ -D BUILD_opencv_xfeatures2d=OFF \ -D BUILD_SHARED_LIBS=OFF \ -D BUILD_TESTS=OFF .. ``` 这些是 CMake 配置选项,用于编译 OpenCV 库。下面是对每个选项的解释: - `-D CMAKE_BUILD_TYPE=RELEASE`:设置构建类型为发布版本,启用优化以提高性能,同时禁用调试信息 - `-D CMAKE_INSTALL_PREFIX=/usr/local`:指定编译后安装的目录 - `-D OPENCV_GENERATE_PKGCONFIG=ON`:生成pkg-config文件。对于其他软件使用 OpenCV 库时有用,默认不生成 - `-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.10.0/modules`:指定 OpenCV 扩展模块的路径 - `-D ENABLE_CXX11=ON`:启用对 C++11 标准的支持 - `-D WITH_1394=OFF`:禁用 FireWire(IEEE 1394)接口的支持。 - `-D BUILD_opencv_xfeatures2d=OFF`:禁用 `xfeatures2d` 模块的构建。如果不需要高级的特征检测和描述功能,可以关闭相关模块 - `-D BUILD_SHARED_LIBS=OFF`:选择编译静态库而非共享库(动态库) - `-D BUILD_TESTS=OFF`:禁用测试的构建 这些选项帮助你定制 OpenCV 的构建,以适应你的需求和环境。如果有其他选项或问题,请随时告诉我! 配置完成后,可以看到以下信息 ![](/media/202408/2024-08-08_120804_3180590.2616486741981875.png) >可能会有下载失败的文件,输出依然显示完成。如果您对 opencv 熟悉可以更换安装包默认的下载链接或者懂得 github 加速可能不会有此问题。 查看`opencv-4.10.0/build/CMakeDownloadLog.txt`,检查下载文件是否都下载完成。 如果日志有下载失败的文件,只需到该目录重新下载文件即可。下载失败示例: 提供代理下载脚本,在build目录下运行 ``` ProxyAddr='http://YOUR_PROXY_ADDRESS:PORT' while read line;do if [[ "$line" =~ '#cmake_download' ]];then file=$(echo $line|awk '{print $2}'|sed 's!"!!g') urls=$(echo $line|awk '{print $3}'|sed 's!"!!g') curl --proxy $ProxyAddr -o $file $urls fi done < ./CMakeDownloadLog.txt ``` 或手动下载,替换下载失败的文件 ![](/media/202408/2024-08-08_121514_5941940.8991438714675927.png) 执行编译和安装 ``` make -j $(nproc) make install ``` ## 5. OpenCV 安装后配置步骤 复制库文件到系统目录 默认情况下,OpenCV 会在 `/usr/lib` 目录下查找库文件。如果 `libopencv_java460.so` 不在该目录,需要将其复制到 `/usr/lib`: ```bash cp /usr/local/share/java/opencv4/libopencv_java460.so /usr/lib ``` 查找 `libopencv_java460.so` 文件 如果不确定 `libopencv_java460.so` 的具体位置,可以使用 `find` 命令进行查找: ```bash find / -name 'libopencv_java*' ``` 创建链接文件 将 OpenCV 的 `.pc` 文件链接到 `/usr/share/pkgconfig` 目录,以便系统能够找到它: ```bash ln -s /usr/local/lib64/pkgconfig/opencv.pc /usr/share/pkgconfig/ ``` 重建库缓存 运行 `ldconfig` 以更新库缓存,使新的库配置生效: ```bash ldconfig ``` 设置环境变量 添加 OpenCV 的库路径到环境变量中: ```bash echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig' >> /etc/profile echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64' >> /etc/profile ``` 使这些环境变量设置生效: ```bash source /etc/profile ``` 验证 OpenCV 安装 确认 OpenCV 是否已正确安装,并检查版本号: ```bash pkg-config --modversion opencv4 ``` 如果输出了正确的版本号,说明 OpenCV 已成功配置。 ![](/media/202408/2024-08-08_123637_7735600.3488525480297262.png)
Nathan
Aug. 8, 2024, 1:46 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password