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

# 推荐:安装 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 已经正确配置并可以访问。
-
打开命令行工具(在 Windows 上是 CMD 或 PowerShell,在 macOS 或 Linux 上是 Terminal)。
-
输入以下命令检查 Python 版本(确保是 Python 3):
(图片来源网络,侵删)python --version # 或者 python3 --version
您应该看到类似
Python 3.9.7或Python 3.10.4的输出。 -
检查
pip版本:pip --version # 或者 pip3 --version
pip命令未找到,您可能需要先安装 pip。
步骤 2:执行安装命令
您可以根据需要选择安装不同的包:

-
opencv-python(基础包)- 这个包包含了 OpenCV 的核心功能,足以满足大部分计算机视觉任务,如图像处理、视频处理、特征检测(如 SIFT, SURF, ORB 等)、目标检测等。
- 安装命令:
pip install opencv-python
-
opencv-contrib-python(推荐,包含更多功能)- 这个包包含了
opencv-python的所有功能,额外增加了一些“贡献模块”(contrib modules),xfeatures2d(提供了 SIFT 和 SURF 算法,这些在主模块中可能因专利问题被禁用)、face(人脸识别相关算法)、dnn(深度神经网络模块)等。 - 强烈建议大多数用户安装这个版本,因为它功能更全面。
- 安装命令:
pip install opencv-contrib-python
- 这个包包含了
-
opencv-python-headless(无 GUI 版本)- 这个包与
opencv-python功能相同,但是不包含任何 GUI 相关的模块(如cv2.imshow())。 - 当您只需要在服务器或 Docker 容器中进行后台处理,不需要显示图像窗口时,这个版本更轻量、更高效。
- 安装命令:
pip install opencv-python-headless
- 这个包与
步骤 3:验证安装
安装完成后,您可以通过编写一个简单的 Python 脚本来验证是否成功。
-
创建一个名为
test_opencv.py的文件。 -
将以下代码复制到文件中:
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("错误:无法读取图片。") -
在命令行中运行这个脚本:
python test_opencv.py
如果一切正常,您应该会看到类似以下的输出,并且会弹出一个显示 "Lena" 图片的窗口:
OpenCV 版本: 4.5.5.64 成功读取图片! 图片尺寸: 512x512(版本号可能会有所不同)。
从源码编译安装(高级用户)
这种方法不推荐给普通用户,因为它非常复杂,耗时很长,并且很容易因为缺少系统依赖而失败,但它在某些特定情况下是必要的,
- 您需要 OpenCV 的某个特殊功能,而预编译包中没有包含。
- 您想对 OpenCV 进行自定义修改。
- 您的系统架构(如 ARM)没有对应的预编译包。
基本步骤(以 Linux 为例)
-
安装依赖库:这是最关键也最容易出错的一步。
# 基于 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
-
克隆 OpenCV 源码:
git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git
-
创建构建目录并编译:
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 -
链接 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'
原因:
- 安装时使用的
python命令和运行脚本时使用的python命令不是同一个版本(一个用的是 Python 2.7,另一个是 Python 3)。 - 安装在了错误的 Python 环境(您在虚拟环境中安装,但在系统全局 Python 中运行)。
解决方案:
-
确保一致性:检查安装和运行时使用的
python命令是否一致,最好使用python3命令来明确使用 Python 3。 -
使用虚拟环境:强烈建议在虚拟环境中进行开发和安装,以避免包冲突。
# 创建虚拟环境 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() 可能无法正常显示图像窗口。
解决方案:
-
在 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() -
在脚本中:在调用
cv2.imshow()之后,加上cv2.waitKey(0),它会等待一个按键事件,否则窗口会一闪而过。cv2.imshow('Image Window', img) cv2.waitKey(0) # 等待任意按键 cv2.destroyAllWindows() # 关闭所有窗口
希望这份详细的指南能帮助您成功安装并开始使用 OpenCV!
