OpenCV 计算机视觉完全教程 / 第 02 章 — 安装与环境配置
第 02 章 — 安装与环境配置
2.1 安装方式概览
| 方式 |
适用场景 |
优点 |
缺点 |
pip install |
快速开发、学习 |
一条命令、自动依赖 |
不含 CUDA、部分 contrib 缺失 |
conda install |
数据科学环境 |
环境隔离好 |
版本可能滞后 |
| 源码编译 |
需要 CUDA / 自定义模块 |
完全可控 |
耗时、依赖多 |
| 预编译包 |
Windows 快速使用 |
无编译 |
版本固定 |
2.2 Python 安装(pip 方式)
2.2.1 基础安装
# 创建虚拟环境(推荐)
python -m venv cv-env
source cv-env/bin/activate # Linux/macOS
# cv-env\Scripts\activate # Windows
# 安装 OpenCV 主模块
pip install opencv-python
# 安装包含 contrib 模块的版本(含 SIFT、ArUco 等)
pip install opencv-contrib-python
# 安装带 GUI 支持的完整版(含 highgui)
pip install opencv-python-headless # 无 GUI(服务器/Docker 推荐)
# 或
pip install opencv-python # 含 GUI
2.2.2 包版本对比
| pip 包名 |
包含内容 |
适用场景 |
opencv-python |
主模块 + GUI |
桌面开发 |
opencv-python-headless |
主模块(无 GUI) |
服务器/Docker |
opencv-contrib-python |
主模块 + contrib + GUI |
完整功能开发 |
opencv-contrib-python-headless |
主模块 + contrib(无 GUI) |
服务器完整功能 |
注意: 不要同时安装 opencv-python 和 opencv-contrib-python,会冲突。
2.2.3 验证安装
import cv2
print(f"OpenCV 版本: {cv2.__version__}")
print(f"构建信息: {cv2.getBuildInformation()}")
# 检查关键模块
modules = ['CORE', 'IMGPROC', 'IMCODECS', 'HIGHGUI',
'VIDEOIO', 'DNN', 'FEATURES2D', 'CALIB3D']
for mod in modules:
print(f" {mod}: {'✅' if hasattr(cv2, 'haveImageReader') else '...'}")
# 测试基本功能
import numpy as np
img = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.circle(img, (50, 50), 30, (255, 0, 0), -1)
success = cv2.imwrite("test_output.png", img)
print(f"图像写入: {'成功' if success else '失败'}")
2.3 conda 安装
# 创建环境
conda create -n cv python=3.11
conda activate cv
# 从 conda-forge 安装(推荐)
conda install -c conda-forge opencv
# 验证
python -c "import cv2; print(cv2.__version__)"
2.4 源码编译安装(完整版)
源码编译是获取 CUDA 支持和自定义模块的唯一方式。
2.4.1 安装依赖(Ubuntu 22.04/24.04)
# 系统依赖
sudo apt update
sudo apt install -y \
build-essential cmake cmake-gui git pkg-config \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libgtk-3-dev libcanberra-gtk3-dev \
libatlas-base-dev gfortran \
python3-dev python3-numpy python3-pip \
libv4l-dev v4l-utils \
libtbb-dev libeigen3-dev
# 可选:GStreamer 支持
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
# 可选:Intel 性能原语
sudo apt install -y ippccw ippcvw ippiew ippw
2.4.2 下载源码
cd ~/src
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
git checkout 4.10.0 # 选择稳定版本
cd ../opencv_contrib
git checkout 4.10.0 # 版本必须匹配
2.4.3 CMake 配置
cd ~/src/opencv
mkdir build && cd build
cmake \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_DOCS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN="7.5,8.0,8.6,8.9,9.0" \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D WITH_TBB=ON \
-D WITH_OPENGL=ON \
..
2.4.4 关键 CMake 选项
| 选项 |
默认值 |
说明 |
WITH_CUDA |
OFF |
启用 CUDA GPU 加速 |
OPENCV_DNN_CUDA |
OFF |
DNN 模块 CUDA 推理 |
WITH_CUDNN |
OFF |
cuDNN 支持 |
CUDA_ARCH_BIN |
自动检测 |
目标 GPU 架构 |
OPENCV_ENABLE_NONFREE |
OFF |
启用专利算法(SIFT 等) |
OPENCV_EXTRA_MODULES_PATH |
无 |
contrib 模块路径 |
BUILD_opencv_python3 |
AUTO |
构建 Python3 绑定 |
WITH_TBB |
OFF |
Intel TBB 多线程 |
WITH_OPENMP |
OFF |
OpenMP 并行 |
WITH_GTK |
AUTO |
Linux GUI 支持 |
WITH_QT |
OFF |
Qt GUI 支持 |
WITH_VULKAN |
OFF |
Vulkan 后端 |
2.4.5 编译与安装
# 查看 CPU 核心数
NPROC=$(nproc)
# 编译(-j 使用所有核心)
make -j$NPROC
# 安装
sudo make install
sudo ldconfig
# 验证安装
python3 -c "import cv2; print(cv2.__version__)"
2.4.6 GPU 架构速查
| GPU 架构 |
Compute Capability |
代表型号 |
| Turing |
7.5 |
RTX 2060/2070/2080, GTX 1650/1660 |
| Ampere |
8.0/8.6 |
RTX 3060/3070/3080/3090, A100 |
| Ada Lovelace |
8.9 |
RTX 4060/4070/4080/4090 |
| Hopper |
9.0 |
H100, H200 |
2.5 Windows 安装
2.5.1 pip 方式(最简单)
pip install opencv-contrib-python
python -c "import cv2; print(cv2.__version__)"
2.5.2 预编译二进制
- 从 opencv.org/releases 下载 Windows 安装包
- 解压后设置环境变量:
OPENCV_DIR = C:\opencv\build
- 将
%OPENCV_DIR%\x64\vc16\bin 加入 PATH
2.5.3 Visual Studio 编译
# 使用 CMake GUI
# Source: C:/src/opencv
# Build: C:/src/opencv/build
# Generator: Visual Studio 17 2022, x64
# 然后在 VS 中编译 Release
2.6 macOS 安装
# 使用 Homebrew
brew install opencv
# 指定 Python 路径
cmake -D PYTHON3_EXECUTABLE=$(brew --prefix python3)/bin/python3 ..
2.7 IDE 配置
2.7.1 VS Code
// .vscode/settings.json
{
"python.analysis.extraPaths": [
"/usr/local/lib/python3.11/site-packages"
],
"python.defaultInterpreterPath": "cv-env/bin/python",
"C_Cpp.includePath": [
"/usr/local/include/opencv4"
]
}
2.7.2 PyCharm
Settings → Python Interpreter → Add
- 选择虚拟环境中的 Python
- 安装
opencv-contrib-python
2.7.3 CMakeLists.txt 模板(C++ 项目)
cmake_minimum_required(VERSION 3.16)
project(my_cv_project)
set(CMAKE_CXX_STANDARD 17)
find_package(OpenCV 4.8 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})
2.8 GPU 支持配置
2.8.1 CUDA 环境检查
# 检查 NVIDIA 驱动
nvidia-smi
# 检查 CUDA 版本
nvcc --version
# 检查 cuDNN
cat /usr/include/cudnn_version.h | grep MAJOR -A 2
2.8.2 验证 OpenCV CUDA 支持
import cv2
# 检查 CUDA 设备数
count = cv2.cuda.getCudaEnabledDeviceCount()
print(f"CUDA 设备数: {count}")
if count > 0:
# 获取设备信息
info = cv2.cuda.DeviceInfo(0)
print(f"设备名: {info.name()}")
print(f"总内存: {info.totalMemory() / 1024**3:.1f} GB")
print(f"计算能力: {info.majorVersion()}.{info.minorVersion()}")
#include <opencv2/opencv.hpp>
#include <opencv2/core/cuda.hpp>
int main() {
int count = cv::cuda::getCudaEnabledDeviceCount();
std::cout << "CUDA 设备: " << count << std::endl;
if (count > 0) {
cv::cuda::printShortCudaDeviceInfo(0);
}
return 0;
}
2.9 贡献模块(contrib)编译说明
contrib 包含许多实用但未进入主仓库的模块:
| 模块 |
功能 |
说明 |
xfeatures2d |
额外特征检测器 |
SIFT(已移入主模块 4.4+)、SURF |
ximgproc |
扩展图像处理 |
边缘感知滤波、超像素 |
aruco / charuco |
ArUco 标记检测 |
AR / 相机标定 |
face |
人脸识别 |
LBPH、Eigen、Fisher |
text |
文字检测 |
基于 SWT 的文字检测 |
tracking |
目标追踪 |
KCF、MOSSE、CSRT |
stereo |
立体匹配 |
丰富的立体算法 |
cudaarithm |
CUDA 算术 |
GPU 加速矩阵运算 |
cudafilters |
CUDA 滤波 |
GPU 加速滤波 |
cudaimgproc |
CUDA 图像处理 |
GPU 颜色转换等 |
2.10 常见安装问题
| 问题 |
原因 |
解决方案 |
ImportError: libGL.so.1 |
headless 环境缺库 |
pip install opencv-python-headless |
ImportError: numpy |
NumPy 版本不兼容 |
pip install numpy>=1.21 |
| 编译时找不到 Python |
CMake 路径错误 |
显式设置 PYTHON3_EXECUTABLE |
| CUDA 编译失败 |
架构不匹配 |
精确设置 CUDA_ARCH_BIN |
undefined symbol |
链接库版本冲突 |
检查 LD_LIBRARY_PATH |
| GUI 窗口不显示 |
headless 安装 |
安装含 GUI 的版本 |
2.11 扩展阅读
本章小结: 掌握了 OpenCV 的多种安装方式,从最简单的 pip 安装到完整的源码编译(含 CUDA、contrib),以及 IDE 配置和 GPU 支持验证。