OpenCV-Python 在 Fedora 上的安装实战从源码编译到 CMake 配置全解析【免费下载链接】opencvOpen Source Computer Vision Library项目地址: https://gitcode.com/GitHub_Trending/opencv31/opencv本篇技术指南基于 OpenCV 仓库中的官方教程 py_setup_in_fedora完整讲解在 Fedora 系统上安装 OpenCV-Python 的两条路径——使用 yum 预编译包与从源码编译安装并结合当前仓库的 CMakeLists.txt、python_loader.cmake 等构建源码帮助读者理解每个 CMake 开关、依赖项和 PYTHONPATH 配置项背后的真实作用最终能够独立完成一次可验证、可复现的 OpenCV-Python 安装。重要提示继承自原文档原文档开头明确标注该指令已弃用deprecated官方建议直接使用 OpenCV-Python 预构建包即opencv-pythonPython 包完成安装。因此本教程的定位是理解原理与掌握源码级安装能力生产环境请优先使用现成的 Python 包。原文档中给出的步骤针对 Fedora 1864 位与 Fedora 1932 位验证过下文所有 yum 包名均以该时期 Fedora 仓库为准。一、安装目标与前置概念教程的目标很明确学会在 Fedora 系统上搭建 OpenCV-Python 环境。OpenCV-Python 在 Fedora 上有两种安装方式从 Fedora 官方仓库安装预编译二进制包从源码编译。除 OpenCV 本体外教程强调三组辅助依赖的定位NumPyOpenCV-Python 唯一的硬性 Python 依赖OpenCV 的Mat与 NumPy 数组互转是其 Python API 的基础必须安装Matplotlib可选但强烈推荐用于简单的图像可视化作者认为它比 OpenCV 自带的绘图更顺手IPython可选交互式 Python 终端同样强烈推荐适合调试 OpenCV 代码。二、方式一从 Fedora 仓库安装预编译包在终端以 root 身份执行yum install numpy opencv*opencv*通配符会匹配仓库中的全部 OpenCV 相关包含 Python 绑定包。安装完成后打开 Python IDLE或 IPython执行 import cv2 as cv print(cv.__version__)如果版本号正常打印且无报错说明安装成功。这条路径非常简单但原文档指出了它的两个固有缺陷至今仍然成立版本滞后yum 仓库中的 OpenCV 版本往往落后于官方最新版原文档举例写教程时 yum 仓库是 2.4.5而官方已到 2.4.6。而 Python API 在较新版本中的支持通常更好。媒体支持不可控摄像头、视频播放能力取决于系统里实际存在的驱动、ffmpeg、gstreamer 等包仓库打包版本未必覆盖你的需求。因此如果你追求最新特性、或将来希望向 OpenCV 提交贡献贡献前必须能完整编译一遍应选择方式二从源码编译。三、方式二从源码编译安装3.1 必装依赖编译 OpenCV-Python 需要四类基础工具链CMake配置、GCC编译、Python-develPython 扩展头文件与 NumPyyum install cmake yum install python-devel numpy yum install gcc gcc-c随后安装 GUI、摄像头与媒体支持相关依赖。结合当前仓库 CMakeLists.txt 中的OCV_OPTION定义来看这些依赖分别对应如下构建开关GTKgtk2-devel→ GUI 模块highgui的后端libdc1394libdc1394-devel→ 对应WITH_DC1394FireWire 相机支持ffmpegffmpeg-devel与gstreamergstreamer-plugins-base-devel→ 对应WITH_FFMPEG/WITH_GSTREAMER视频 I/O 后端。yum install gtk2-devel yum install libdc1394-devel yum install ffmpeg-devel yum install gstreamer-plugins-base-devel3.2 可选依赖以上依赖已足以装出可用的 OpenCV以下依赖按需取舍图像格式库。OpenCV 源码树内自带了 PNG、JPEG、JPEG2000、TIFF、WebP 等编解码器见 3rdparty 目录下的 libpng、libjpeg-turbo、openjpeg、libtiff、libwebp 等子目录但版本可能偏旧。若需要最新编解码库可安装系统发行版提供的新版开发包yum install libpng-devel yum install libjpeg-turbo-devel yum install jasper-devel yum install openexr-devel yum install libtiff-devel yum install libwebp-develTBBIntel Threading Building Blocks。多个 OpenCV 函数基于 TBB 并行化。当前仓库 CMakeLists.txt#L305 中定义为OCV_OPTION(WITH_TBB Include Intel TBB support OFF ...)——注意当前默认值是OFF若系统装了 TBB 也需显式传-D WITH_TBBON才会启用yum install tbb-develEigen。OpenCV 用它做矩阵类数学运算的优化实现。当前仓库 CMakeLists.txt#L216 中WITH_EIGEN的默认值为NOT CV_DISABLE_OPTIMIZATION AND NOT CMAKE_CROSSCOMPILING即常规 x86 构建默认开启一旦系统装有 EigenCMake 配置输出中会显示Use Eigen: YES (ver x.y.z)yum install eigen3-develDoxygen。如果希望在本机生成完整的 OpenCV 离线 HTML 文档带全文搜索离线查阅需安装文档生成工具yum install doxygen3.3 获取 OpenCV 源码可以下载官方最新 release 包解压使用如果希望参与贡献或始终跟进最新代码则用 Git 克隆官方仓库需先yum install git。克隆会在当前目录生成 opencv 代码目录耗时取决于网络。进入代码根目录后创建独立的构建目录CMake 推荐的 out-of-source buildmkdir build cd build3.4 用 CMake 配置安装CMake 配置决定了启用哪些模块、安装路径、使用哪些第三方库、是否构建文档与示例等。基本格式是在 build 目录内执行cmake [-D flag] [-D flag] ..每个选项前必须加-D末尾的..指向源码根目录。可以追加任意多个 flag。教程给出的基准命令是cmake -D CMAKE_BUILD_TYPERELEASE -D CMAKE_INSTALL_PREFIX/usr/local ..-D CMAKE_BUILD_TYPERELEASERelease 模式编译优化开启-D CMAKE_INSTALL_PREFIX/usr/local安装到/usr/localmake install后所有文件都落在该前缀下。教程的完整配置策略拆成四组便于理解实际可合并成一条 cmake 命令启用 TBB 与 Eigencmake -D WITH_TBBON -D WITH_EIGENON ..启用文档、关闭测试与示例cmake -D BUILD_DOCSON -D BUILD_TESTSOFF -D BUILD_PERF_TESTSOFF -D BUILD_EXAMPLESOFF ..这些开关在当前仓库 CMakeLists.txt#L454-L457 中均有对应定义BUILD_DOCS默认 OFF、BUILD_EXAMPLES默认 OFF、BUILD_TESTS与BUILD_PERF_TESTS默认 ON用于构建精度回归测试与性能测试。关闭测试与示例可以显著缩短编译时间。关闭 GPU 相关模块纯 Python 用户不需要省编译时间cmake -D WITH_OPENCLOFF -D BUILD_opencv_gpuOFF -D BUILD_opencv_gpuarithmOFF ...注意版本差异opencv_gpu*系列模块只存在于 OpenCV 2.x 时代。当前仓库的 modules 目录中已没有 gpu 模块现有模块如 core、imgproc、dnn、video、objdetect 等因此在新版源码上编译时这些BUILD_opencv_gpu*开关已无意义现在关闭 GPU/异构加速主要靠-D WITH_OPENCLOFF、-D WITH_CUDAOFF等。设置安装路径与构建类型cmake -D CMAKE_BUILD_TYPERELEASE -D CMAKE_INSTALL_PREFIX/usr/local ..每次执行 cmake 都会打印最终配置。原文档要求检查输出中以下关键字段是否为“填充成功”状态以下摘录自原文档作者当时的实际输出版本号随系统不同而异-- GUI: -- GTK 2.x: YES (ver 2.24.19) -- GThread : YES (ver 2.36.3) -- Video I/O: -- DC1394 2.x: YES (ver 2.2.0) -- FFMPEG: YES -- GStreamer: -- base: YES (ver 0.10.36) -- video: YES (ver 0.10.36) -- V4L/V4L2: Using libv4l (ver 1.0.0) -- Other third-party libraries: -- Use Eigen: YES (ver 3.1.4) -- Use TBB: YES (ver 4.0 interface 6004) -- Python: -- Interpreter: /usr/bin/python2 (ver 2.7.5) -- Libraries: /lib/libpython2.7.so (ver 2.7.5) -- numpy: /usr/lib/python2.7/site-packages/numpy/core/include (ver 1.7.1) -- packages path: lib/python2.7/site-packages这份输出正是对应 3.1 中安装依赖是否成功的最直接验证GTK/FFMPEG/GStreamer/Eigen/TBB 任一为 NO回头检查对应-devel包是否装齐。其中packages path字段的推导逻辑可以在当前仓库 cmake/OpenCVDetectPython.cmake#L193-L197 中找到构建脚本通过sysconfig.get_path(purelib)探测解释器的标准包路径若以site-packages结尾则取lib/pythonX.Y/site-packages否则Debian 系取dist-packages。3.5 编译与安装make su make installmake install必须以 root 执行教程用su切到 root。安装完成后所有文件位于/usr/local/下。此时 Python 需要能找到 cv2 模块教程给出两个方案方案 A把 cv2 模块移动到 Python 路径中的某个目录。先在 Python 终端执行import sys; print(sys.path)查看搜索路径然后把编译产物移入其中之一例如su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages缺点每次重装 OpenCV 都要重复此操作。方案 B推荐把安装目录加入 PYTHONPATH。只需一次——编辑~/.bashrc追加一行然后重新登录 shellexport PYTHONPATH$PYTHONPATH:/usr/local/lib/python2.7/site-packages这个方案与当前仓库的 Python 绑定设计是一脉相承的modules/python/python_loader.cmake#L7 在开发构建时同样会提示OpenCV Python: during development append to PYTHONPATH: build/python_loader即官方构建体系本身就依赖 PYTHONPATH 机制让 Python 定位 cv2 包新版绑定是一个cv2/目录加配置加载器而非单一的cv2.so。配置完成后打开终端执行import cv2 as cv验证即可。3.6 生成本地文档可选若配置时开启了BUILD_DOCSON并安装了 Doxygen在 build 目录执行make doxygen当前仓库 CMakeLists.txt#L1329-L1331 中确认了doxygen目标在doxygen_cpp/doxygen_python目标存在时可用cmake/OpenCVExtraTargets.cmake#L46 则在BUILD_DOCS时创建opencv_docs目标。生成后打开opencv/build/doc/doxygen/html/index.html并加入书签即可获得带全文搜索的离线版完整文档。四、练习原文档末尾布置的练习在你的 Fedora 机器上完成一次从源码编译 OpenCV 的全过程并用import cv2 as cv验证结果。五、把这篇老教程用到今天的注意事项原文档写于 OpenCV 2.4.x / Python 2.7 时代迁移到当前仓库源码时以下几点差异需要读者自行修正安装方式优先级文档头部警告已明确——日常使用请直接安装opencv-python预构建包本教程的源码路径更适合学习与贡献场景CMake 选项语义变化WITH_TBB当前默认为 OFF见 CMakeLists.txt#L305WITH_EIGEN默认为 ON见 CMakeLists.txt#L216opencv_gpu*模块已从 modules 中移除相关BUILD_opencv_gpu*开关不再需要Python 版本教程中的python-develPython 2.7在当今 Fedora 上应替换为python3-devel当前 Python 绑定构建脚本同时带有 py2/py3 两套配置加载器见 python_loader.cmake安装后的包路径也会变为lib/python3.x/site-packages验证字段不变无论哪个版本以 cmake 配置输出中 GUI、Video I/O、Third-party libraries、Python 四个区块是否全部为 YES 作为依赖安装是否到位的判据这一方法论长期有效。掌握“yum 快速装包”与“源码编译”两条路径后读者不仅能在 Fedora 上可靠地得到可运行的 OpenCV-Python 环境还能读懂 CMake 配置输出的每一项含义为后续定制编译选项、排查依赖缺失打下基础。【免费下载链接】opencvOpen Source Computer Vision Library项目地址: https://gitcode.com/GitHub_Trending/opencv31/opencv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
