第二章 开发环境搭建:工欲善其事,必先利其器

说实话,我见过太多初学者在环境配置上栽跟头了。

明明代码逻辑没问题,结果因为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-pythonopencv-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。

我个人习惯做几个配置:

  1. 修改默认工作目录——在配置文件里设置c.NotebookApp.notebook_dir = 'D:/cv_course',这样每次启动都直接进入项目文件夹。
  2. 设置密码——防止别人访问你的Notebook。用jupyter notebook password命令设置。
  3. 安装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到底有多强大。