第二章 开发环境搭建:工欲善其事,必先利其器
说实话,我见过太多初学者在环境配置上栽跟头了。
明明代码逻辑没问题,结果因为OpenCV版本不对、Python路径冲突,折腾一整天。我自己刚入行时也踩过类似的坑——有一次项目演示前半小时,发现环境崩了,那叫一个狼狈。
所以这一章,咱们把开发环境彻底搞定。你跟着我走一遍,后面30章就顺风顺水了。
2.1 Anaconda安装:Python的“瑞士军刀”
Anaconda是什么?说白了,它是一个Python发行版,自带包管理器和虚拟环境功能。你想想看,如果手动装Python、再一个个装库,光依赖冲突就能让你崩溃。
我个人习惯用Anaconda,因为它把科学计算常用的库都打包好了。比如NumPy、Pandas、Matplotlib,装完就能用。
下载地址:https://www.anaconda.com/products/individual
选择对应操作系统的版本(Windows/macOS/Linux)。建议下载Python 3.8或3.9版本,太新的版本有时会有兼容问题。
安装时注意两点:
- 勾选“Add Anaconda to my PATH environment variable”——这样可以在命令行直接调用conda命令。
- 安装路径不要有中文或空格——我见过有人装在“程序文件”目录下,结果死活找不到环境。
避坑指南:我曾经在Windows上装Anaconda时忘了勾选PATH选项,结果每次都要进安装目录敲命令。后来重装了一遍才解决。所以这一步千万别省。
2.2 Python虚拟环境管理:隔离是美德
为什么要用虚拟环境?
你想想看,项目A需要OpenCV 4.5,项目B需要OpenCV 4.8。如果装在同一套Python里,冲突是迟早的事。虚拟环境就是给每个项目一个独立的“小房间”。
我常用的命令就这几个:
# 创建虚拟环境(指定Python版本)
conda create -n cv_env python=3.8
# 激活环境
conda activate cv_env
# 退出环境
conda deactivate
# 查看所有环境
conda env list
# 删除环境
conda env remove -n cv_env
嗯,这里要注意:环境名最好有含义。比如cv_env代表计算机视觉环境,nlp_env代表自然语言处理环境。别起什么test1、test2,三个月后你自己都忘了是干嘛的。
我的习惯:每个项目都新建一个虚拟环境,哪怕只是练手的小项目。这样即使环境搞坏了,删掉重建就行,不影响其他项目。
2.3 OpenCV库安装与验证:视觉世界的入口
OpenCV是计算机视觉的核心库。安装其实很简单,但版本选择有讲究。
我个人推荐安装opencv-python和opencv-contrib-python两个包。前者是核心功能,后者包含一些扩展模块(比如SIFT、SURF这些特征提取算法)。
# 激活虚拟环境后执行
pip install opencv-python==4.5.5.64
pip install opencv-contrib-python==4.5.5.64
为什么指定版本号?因为最新版有时会去掉一些旧功能。比如OpenCV 4.5.3之后,某些专利算法被移除了。我建议用4.5.5这个版本,稳定且功能全。
安装完成后,验证一下:
import cv2
print(cv2.__version__)
# 输出应为:4.5.5
如果报错“No module named 'cv2'”,说明没装成功。常见原因有两个:
- 没有激活虚拟环境就直接pip install了
- 网络问题导致下载中断(国内建议换清华镜像源)
换源命令:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
再验证一个功能——读取图片:
import cv2
img = cv2.imread('test.jpg')
print(img.shape) # 输出:(高度, 宽度, 通道数)
cv2.imshow('Test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
如果能看到图片窗口弹出来,恭喜你,OpenCV装好了。
避坑指南:我曾经在macOS上遇到cv2.imshow()报错,原因是系统没有安装图形界面支持。解决方案是安装pip install opencv-python-headless,或者用matplotlib代替显示。
2.4 Jupyter Notebook配置:交互式编程利器
Jupyter Notebook是数据科学家的标配。它让你能边写代码边看结果,特别适合做实验和教学。
安装很简单:
# 在虚拟环境中安装
pip install jupyter notebook
# 启动
jupyter notebook
启动后浏览器会自动打开一个页面,默认端口是8888。如果端口被占用,它会自动切换到8889。
我个人习惯做几个配置:
- 修改默认工作目录——在配置文件里设置
c.NotebookApp.notebook_dir = 'D:/cv_course',这样每次启动都直接进入项目文件夹。 - 设置密码——防止别人访问你的Notebook。用
jupyter notebook password命令设置。 - 安装nbextensions——这是一个扩展插件,能添加代码折叠、目录生成等功能。
# 安装nbextensions
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
重启Jupyter后,你会看到顶部多了一个“Nbextensions”选项卡,勾选你需要的功能就行。
我的小技巧:在Notebook里按Tab键可以自动补全代码,按Shift+Tab可以查看函数文档。这两个快捷键能让你效率翻倍。
2.5 环境验证:跑通第一个视觉程序
环境搭好了,咱们跑个简单的程序验证一下。读取一张图片,转成灰度图,再保存:
import cv2
# 读取彩色图片
img_color = cv2.imread('test.jpg')
# 转为灰度图
img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY)
# 保存结果
cv2.imwrite('test_gray.jpg', img_gray)
print('转换完成!')
如果一切顺利,你会在当前目录下看到一张灰度图。这说明你的环境完全OK了。
嗯,到这里开发环境就搭建完毕了。你可能会问:为什么不用PyCharm或者VS Code?
我的建议是:前期用Jupyter Notebook做实验,后期写项目用PyCharm。Notebook适合探索和教学,IDE适合工程化开发。两者不冲突。
本章总结:
| 工具 | 用途 | 关键命令 |
|---|---|---|
| Anaconda | Python发行版 + 包管理 | conda create / activate |
| 虚拟环境 | 隔离项目依赖 | conda create -n env_name python=3.8 |
| OpenCV | 计算机视觉核心库 | pip install opencv-python |
| Jupyter Notebook | 交互式编程环境 | jupyter notebook |
下一章,咱们正式开始图像处理的基础操作。到时候你会看到,OpenCV到底有多强大。