1. 课程导学与环境准备
各位同学好,我是这门课的主讲。在正式开始之前,我想先聊聊这门课到底要带大家做什么。
人脸识别,说白了就是让计算机看懂人脸。摄像头对接,则是让计算机有「眼睛」。把这两件事串起来,就是咱们这门课的核心——从零搭建一套能跑在真实场景下的人脸识别系统。
我个人习惯是,学任何技术之前先搞清楚三件事:学什么、给谁学、怎么学。咱们先把这个框架搭好,再动手装环境。
课程核心目标:30 章结束后,你能独立完成摄像头画面采集 → 人脸检测 → 特征提取 → 人脸比对 → API 封装的全链路开发。
1.1 课程目标与适用人群
这门课不是纯理论课,也不是纯调包课。它更偏向「工程落地」—— 你学完就能直接用到项目里。
| 维度 | 具体说明 |
|---|---|
| 技术目标 | 掌握 OpenCV 摄像头调用、人脸检测算法(Haar / DNN / MTCNN)、特征提取与比对、Flask/FastAPI 接口封装 |
| 工程目标 | 能搭建可复用的摄像头对接框架,处理多路流、低光照、遮挡等真实场景问题 |
| 适用人群 | 有 Python 基础、想切入计算机视觉方向的开发者;正在做人脸门禁/考勤/安防项目的工程师 |
| 前置要求 | Python 基础语法、基本面向对象概念、命令行操作 |
我记得有一次带新人做项目,对方连虚拟环境都没配,直接在系统 Python 里装包,结果把生产环境的依赖搞崩了……嗯,这种事我见过不止一次。所以环境搭建这块,咱们得认真对待。
1.2 学习路径与知识体系
我把 30 章内容分成了四个阶段,你心里有个谱就好:
- 基础篇(第 1-8 章):环境搭建、OpenCV 基础、摄像头调用、图像预处理
- 检测篇(第 9-16 章):人脸检测算法原理与实战、Haar Cascade、DNN、MTCNN
- 识别篇(第 17-24 章):特征提取、人脸比对、FaceNet、ArcFace、数据库集成
- 实战篇(第 25-30 章):API 封装、多路摄像头、性能优化、项目部署
下面这张图,就是咱们整个课程的知识结构。我建议你保存下来,学完一章回来打个勾。
1.3 开发环境搭建
环境搭建这块,我踩过不少坑。最典型的就是 Python 版本冲突 —— 系统自带的 Python 2.7 和项目需要的 Python 3.10 打架。所以咱们统一用虚拟环境隔离。
1.3.1 Python 与 OpenCV 安装
我建议你用 Python 3.8 或 3.10,这两个版本对 OpenCV 的兼容性最好。别用 3.12 以上,有些老模型库还没适配。
# 1. 安装 Python(官网下载,勾选 Add to PATH)
# 2. 验证安装
python --version
pip --version
# 3. 安装 OpenCV(核心库 + 扩展库)
pip install opencv-python==4.8.1.78
pip install opencv-contrib-python==4.8.1.78
# 4. 验证安装
python -c "import cv2; print(cv2.__version__)"
小技巧:安装 opencv-contrib-python 会包含 SIFT、SURF 等扩展模块,后面做人脸特征匹配时会用到。如果只装 opencv-python,有些功能会缺失。
1.3.2 IDE 选择
我个人习惯用 VS Code,轻量、插件丰富。当然 PyCharm 也不错,看个人喜好。这里给个对比:
| IDE | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| VS Code | 启动快、插件生态好、免费 | 调试功能相对弱 | 日常开发、调试简单项目 |
| PyCharm | 专业级调试、代码分析强 | 启动慢、社区版功能受限 | 大型项目、多人协作 |
| Jupyter Lab | 交互式、适合探索性实验 | 不适合工程化开发 | 算法验证、数据可视化 |
我建议你 VS Code + Jupyter 搭配用。写代码用 VS Code,调参数用 Jupyter,效率最高。
1.4 虚拟环境配置
虚拟环境这东西,说白了就是给每个项目一个独立的 Python 解释器和包空间。你想想看,项目 A 用 OpenCV 4.8,项目 B 用 OpenCV 4.5,如果没有虚拟环境,它们就会打架。
我曾经在一个项目里同时装了 OpenCV 4.5 和 4.8,结果 import 的时候老是报错,查了半天才发现是版本冲突。从那以后,我每个项目都老老实实建虚拟环境。
1.4.1 使用 venv(Python 内置)
# 创建虚拟环境
python -m venv face_env
# 激活(Windows)
face_env\Scripts\activate
# 激活(macOS / Linux)
source face_env/bin/activate
# 安装依赖
pip install opencv-python==4.8.1.78
pip install numpy==1.24.3
# 导出依赖清单
pip freeze > requirements.txt
# 退出虚拟环境
deactivate
1.4.2 使用 conda(推荐)
如果你做 CV 项目,我推荐用 conda。它对 OpenCV、NumPy、SciPy 这些科学计算库的依赖管理更友好。
# 创建 conda 环境
conda create -n face_env python=3.10
# 激活
conda activate face_env
# 安装 OpenCV(conda 版本)
conda install -c conda-forge opencv=4.8.1
# 安装其他依赖
pip install numpy matplotlib
# 导出环境
conda env export > environment.yml
# 从文件重建环境
conda env create -f environment.yml
注意:conda 和 pip 混用时要小心。建议先用 conda 安装核心包(OpenCV、NumPy),再用 pip 安装其他包。如果混用导致冲突,可以试试 conda install 先卸载再重装。
1.5 验证环境
环境搭好了,咱们跑个简单程序验证一下。这段代码会打开你的摄像头,显示实时画面,按 Q 键退出。
import cv2
# 打开摄像头(0 表示默认摄像头)
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("无法打开摄像头,请检查连接")
exit()
while True:
ret, frame = cap.read()
if not ret:
print("无法获取画面")
break
# 显示画面
cv2.imshow("Camera Test", frame)
# 按 Q 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
如果运行后能看到摄像头画面,恭喜你,环境搭建成功了!
常见问题排查:
- 摄像头打不开 → 检查是否被其他程序占用(如 Zoom、)
- 画面卡顿 → 降低分辨率:
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) - 报错 ModuleNotFoundError → 确认虚拟环境已激活
1.6 本章小结
这一章咱们做了三件事:
- 理清了课程目标和学习路径
- 搭建了 Python + OpenCV 开发环境
- 配置了虚拟环境并验证了摄像头调用