杰瑞科技汇

Python3如何安装OpenCV?

对于绝大多数用户,最推荐的方法是使用 pip 从预编译的轮子包进行安装,这是最快、最简单、最不容易出错的方式。

Python3如何安装OpenCV?-图1
(图片来源网络,侵删)
# 推荐:安装 OpenCV 的主要库
pip install opencv-python
# 如果需要额外的高级功能(如 SIFT, SURF 等),安装这个补充包
pip install opencv-contrib-python

使用 pip 安装(最推荐)

pip 是 Python 的包安装器,OpenCV 官方为 Python 提供了预编译好的 wheel 文件(.whl),这使得安装过程非常简单。

步骤 1:检查 Python 和 pip 环境

在安装之前,请确保您的 Python 3 和 pip 已经正确配置并可以访问。

  1. 打开命令行工具(在 Windows 上是 CMDPowerShell,在 macOS 或 Linux 上是 Terminal)。

  2. 输入以下命令检查 Python 版本(确保是 Python 3):

    Python3如何安装OpenCV?-图2
    (图片来源网络,侵删)
    python --version
    # 或者
    python3 --version

    您应该看到类似 Python 3.9.7Python 3.10.4 的输出。

  3. 检查 pip 版本:

    pip --version
    # 或者
    pip3 --version

    pip 命令未找到,您可能需要先安装 pip

步骤 2:执行安装命令

您可以根据需要选择安装不同的包:

Python3如何安装OpenCV?-图3
(图片来源网络,侵删)
  1. opencv-python (基础包)

    • 这个包包含了 OpenCV 的核心功能,足以满足大部分计算机视觉任务,如图像处理、视频处理、特征检测(如 SIFT, SURF, ORB 等)、目标检测等。
    • 安装命令:
      pip install opencv-python
  2. opencv-contrib-python (推荐,包含更多功能)

    • 这个包包含了 opencv-python 的所有功能,额外增加了一些“贡献模块”(contrib modules)xfeatures2d(提供了 SIFT 和 SURF 算法,这些在主模块中可能因专利问题被禁用)、face(人脸识别相关算法)、dnn(深度神经网络模块)等。
    • 强烈建议大多数用户安装这个版本,因为它功能更全面。
    • 安装命令:
      pip install opencv-contrib-python
  3. opencv-python-headless (无 GUI 版本)

    • 这个包与 opencv-python 功能相同,但是不包含任何 GUI 相关的模块(如 cv2.imshow())。
    • 当您只需要在服务器或 Docker 容器中进行后台处理,不需要显示图像窗口时,这个版本更轻量、更高效。
    • 安装命令:
      pip install opencv-python-headless

步骤 3:验证安装

安装完成后,您可以通过编写一个简单的 Python 脚本来验证是否成功。

  1. 创建一个名为 test_opencv.py 的文件。

  2. 将以下代码复制到文件中:

    import cv2
    # 打印 OpenCV 的版本号
    print(f"OpenCV 版本: {cv2.__version__}")
    # 尝试读取一个图片(请确保您有一张名为 'test.jpg' 的图片在脚本同目录下)
    # 或者从网络下载一张
    import urllib.request
    url = "https://raw.githubusercontent.com/opencv/opencv/master/samples/data/lena.jpg"
    urllib.request.urlretrieve(url, "lena.jpg")
    image = cv2.imread("lena.jpg")
    if image is not None:
        print("成功读取图片!")
        # 获取图片的尺寸
        height, width = image.shape[:2]
        print(f"图片尺寸: {width}x{height}")
    else:
        print("错误:无法读取图片。")
  3. 在命令行中运行这个脚本:

    python test_opencv.py

    如果一切正常,您应该会看到类似以下的输出,并且会弹出一个显示 "Lena" 图片的窗口:

    OpenCV 版本: 4.5.5.64
    成功读取图片!
    图片尺寸: 512x512

    (版本号可能会有所不同)。


从源码编译安装(高级用户)

这种方法不推荐给普通用户,因为它非常复杂,耗时很长,并且很容易因为缺少系统依赖而失败,但它在某些特定情况下是必要的,

  • 您需要 OpenCV 的某个特殊功能,而预编译包中没有包含。
  • 您想对 OpenCV 进行自定义修改。
  • 您的系统架构(如 ARM)没有对应的预编译包。

基本步骤(以 Linux 为例)

  1. 安装依赖库:这是最关键也最容易出错的一步。

    # 基于 Debian/Ubuntu
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git pkg-config libjpeg-dev libtiff5-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran python3-dev
    # 基于 Fedora/CentOS
    sudo dnf install -y gcc gcc-c++ cmake git pkgconfig libjpeg-turbo-devel libtiff-devel libpng-devel libdc1394-devel ffmpeg-devel gtk3-devel atlas-devel python3-devel
  2. 克隆 OpenCV 源码

    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 配置
    # 注意:将 /path/to/opencv_contrib 替换为您的实际路径
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D INSTALL_PYTHON_EXAMPLES=ON \
          -D INSTALL_C_EXAMPLES=OFF \
          -D OPENCV_ENABLE_NONFREE=ON \
          -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules \
          -D BUILD_EXAMPLES=ON ..
    # 编译(这可能会花费很长时间)
    make -j$(nproc)  # 使用所有可用的 CPU 核心进行并行编译
    # 安装
    sudo make install
  4. 链接 Python 库:编译安装后,cv2.so 文件可能会被放在一个非标准路径,您可能需要手动创建符号链接到您的 Python 环境的 site-packages 目录。


常见问题与解决方案

问题 1:pip install 速度慢或失败

原因:默认的 PyPI 源服务器在国外,国内访问可能较慢或被墙。

解决方案:使用国内镜像源。

# 使用清华大学的镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python
# 或者使用阿里云的镜像源
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-contrib-python

问题 2:ModuleNotFoundError: No module named 'cv2'

原因

  1. 安装时使用的 python 命令和运行脚本时使用的 python 命令不是同一个版本(一个用的是 Python 2.7,另一个是 Python 3)。
  2. 安装在了错误的 Python 环境(您在虚拟环境中安装,但在系统全局 Python 中运行)。

解决方案

  1. 确保一致性:检查安装和运行时使用的 python 命令是否一致,最好使用 python3 命令来明确使用 Python 3。

  2. 使用虚拟环境:强烈建议在虚拟环境中进行开发和安装,以避免包冲突。

    # 创建虚拟环境
    python3 -m venv myenv
    # 激活虚拟环境 (Windows)
    myenv\Scripts\activate
    # 激活虚拟环境 (macOS/Linux)
    source myenv/bin/activate
    # 在激活的环境中安装
    pip install opencv-contrib-python
    # 运行脚本
    python test_opencv.py

问题 3:cv2.imshow() 不工作或窗口闪退

原因:在某些环境中(如 Jupyter Notebook、SSH 连接、服务器),cv2.imshow() 可能无法正常显示图像窗口。

解决方案

  1. 在 Jupyter Notebook/Lab 中:使用 matplotlib 来显示图像。

    %matplotlib inline
    import cv2
    import matplotlib.pyplot as plt
    img = cv2.imread('lena.jpg')
    # OpenCV 读取的图像是 BGR 格式,matplotlib 需要的是 RGB 格式
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(img_rgb)
    plt.axis('off') # 不显示坐标轴
    plt.show()
  2. 在脚本中:在调用 cv2.imshow() 之后,加上 cv2.waitKey(0),它会等待一个按键事件,否则窗口会一闪而过。

    cv2.imshow('Image Window', img)
    cv2.waitKey(0)  # 等待任意按键
    cv2.destroyAllWindows() # 关闭所有窗口

希望这份详细的指南能帮助您成功安装并开始使用 OpenCV!

分享:
扫描分享到社交APP
上一篇
下一篇