2. 环境搭建:OpenCV的安装与开发环境配置(Windows/Linux)
说实话,很多初学者在算法上没栽跟头,反而卡在了环境搭建这一步。我见过太多人花了一整天装库,最后发现是Python版本不对。这一章,咱们就把这事彻底理清楚。
2.1 核心思路:先定版本,再动手
安装OpenCV之前,你得想清楚三件事:
- 用哪个语言接口?——工业现场90%用Python,C++留给实时性要求极高的场景。
- 用哪个OpenCV版本?——我个人推荐4.5.x或4.6.x,稳定且文档全。别追最新版,容易踩坑。
- 要不要contrib模块?——如果你要做特征匹配、跟踪、文本检测,必须装contrib版。
我的经验:在产线上,我习惯用Python 3.8 + OpenCV 4.5.5。这个组合经过大量项目验证,兼容性最好。你如果图省事,直接照搬就行。
2.2 Windows环境搭建
2.2.1 安装Python
先去Python官网下载3.8或3.9版本。安装时记得勾选"Add Python to PATH"——这一步忘了,后面会非常痛苦。
验证安装:
python --version
pip --version
2.2.2 安装OpenCV
打开命令行,直接敲:
pip install opencv-python==4.5.5.64
pip install opencv-contrib-python==4.5.5.64
为什么要指定版本号?因为不指定的话,pip会拉最新的。我曾经在客户现场遇到过,最新版OpenCV和他们的工业相机SDK不兼容,折腾了整整一个下午。
2.2.3 验证安装
写个最简单的脚本测试一下:
import cv2
print(cv2.__version__)
# 如果能打印出 4.5.5,说明安装成功
小技巧:如果你在公司内网,pip下载慢,可以换成清华镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==4.5.5.64
2.3 Linux环境搭建(以Ubuntu为例)
Linux下有两种安装方式:apt和pip。我建议用pip,因为apt源里的OpenCV版本通常比较老。
2.3.1 安装依赖
sudo apt update
sudo apt install python3-pip python3-dev
sudo apt install libgl1-mesa-glx libglib2.0-0 # 解决GUI相关报错
嗯,这里要注意。很多人在Linux下装完OpenCV,一运行就报libGL.so.1找不到。其实就是少了上面那行依赖。
2.3.2 安装OpenCV
pip3 install opencv-python==4.5.5.64
pip3 install opencv-contrib-python==4.5.5.64
2.3.3 验证
python3 -c "import cv2; print(cv2.__version__)"
避坑指南:我曾经在Ubuntu 20.04上直接用sudo apt install python3-opencv,结果装的是4.2.0版本。这个版本在读取某些工业相机图像时会有色彩通道顺序问题。所以,老老实实用pip装吧。
2.4 开发环境配置
光装库还不够,你得有个趁手的编辑器。我个人推荐VS Code,轻量、插件丰富、调试方便。
2.4.1 VS Code配置要点
- 安装Python插件(微软官方那个)
- 安装Pylance(代码补全更强)
- 设置Python解释器路径:Ctrl+Shift+P → Python: Select Interpreter
2.4.2 虚拟环境(强烈推荐)
每个项目用独立的虚拟环境,避免包冲突。我在一个项目里就吃过亏——两个项目依赖不同版本的numpy,结果一个跑起来另一个就崩。
# 创建虚拟环境
python -m venv opencv_env
# 激活(Windows)
opencv_env\Scripts\activate
# 激活(Linux)
source opencv_env/bin/activate
# 在虚拟环境中安装OpenCV
pip install opencv-python==4.5.5.64
2.5 知识结构总览
下面这张图,把整个环境搭建的流程串起来了。你照着走,基本不会出问题。
2.6 常见问题速查表
| 问题现象 | 原因 | 解决方案 |
|---|---|---|
| ImportError: No module named cv2 | OpenCV未安装或Python环境不对 | 检查pip list,确认在正确的虚拟环境中 |
| libGL.so.1: cannot open shared object file | Linux缺少OpenGL库 | sudo apt install libgl1-mesa-glx |
| cv2.imshow()报错 | 无GUI环境(如服务器) | 改用cv2.imwrite()保存图像 |
| pip安装超时 | 网络问题 | 使用国内镜像源 |