人工智能之视觉领域 计算机视觉
第一章 基础概念
文章目录
- [人工智能之视觉领域 计算机视觉](#人工智能之视觉领域 计算机视觉)
- [前言:OpenCV 是什么?能做什么?](#前言:OpenCV 是什么?能做什么?)
- [1. 通俗理解:OpenCV 是图像与视频的「瑞士军刀」](#1. 通俗理解:OpenCV 是图像与视频的「瑞士军刀」)
- [2. OpenCV 能做什么?------典型应用场景](#2. OpenCV 能做什么?——典型应用场景)
- [3. OpenCV 的核心功能模块(简要)](#3. OpenCV 的核心功能模块(简要))
- [4. OpenCV 的工作流程(Mermaid 流程图)](#4. OpenCV 的工作流程(Mermaid 流程图))
- [5. 快速上手:5 行代码体验 OpenCV](#5. 快速上手:5 行代码体验 OpenCV)
- [安装 OpenCV(Python)](#安装 OpenCV(Python))
- [示例 1:读取并显示一张图片](#示例 1:读取并显示一张图片)
- [示例 2:实时摄像头人脸检测(使用 Haar 级联)](#示例 2:实时摄像头人脸检测(使用 Haar 级联))
- [6. 学习 OpenCV 的正确姿势](#6. 学习 OpenCV 的正确姿势)
- [7. 常见误区提醒](#7. 常见误区提醒)
- 总结
- 资料关注
前言:OpenCV 是什么?能做什么?
1. 通俗理解:OpenCV 是图像与视频的「瑞士军刀」
OpenCV(Open Source Computer Vision Library) 是一个开源的、跨平台的计算机视觉和机器学习软件库。你可以把它想象成一个装满了各种"图像处理工具"的百宝箱------就像你家厨房里的多功能料理机,切菜、榨汁、搅拌样样精通。
✅ 一句话总结 :
OpenCV 就是专门用来让计算机"看懂"图像和视频的工具包。
它最初由 Intel 开发,如今由社区维护,支持 C++、Python、Java 等多种语言,其中 Python 接口最流行,因为写起来简单、调试方便。
2. OpenCV 能做什么?------典型应用场景
| 应用领域 | 具体例子 | OpenCV 的作用 |
|---|---|---|
| 人脸识别 | 手机解锁、门禁系统 | 检测人脸位置、提取特征、比对身份 |
| 美颜滤镜 | 抖音/Instagram 滤镜 | 皮肤平滑、磨皮、大眼、瘦脸、背景虚化 |
| } | ||
| 视频监控 | 商场/小区安防 | 运动目标检测、异常行为识别、人数统计 |
| 自动驾驶 | 车道线识别、行人检测 | 实时分析摄像头画面,辅助决策 |
| 医学影像 | X光/CT 图像分析 | 增强对比度、分割病灶区域 |
| AR/VR | 虚拟试衣、手势交互 | 特征点跟踪、姿态估计 |
| 工业质检 | 产品缺陷检测 | 图像二值化、边缘检测、模板匹配 |
💡 关键能力 :
OpenCV 能完成从"读取一张图"到"理解图中内容"的全链条操作。
3. OpenCV 的核心功能模块(简要)
- 图像 I/O:读取、保存、显示图像/视频
- 图像处理:灰度化、滤波、边缘检测、形态学操作
- 特征检测:角点、SIFT、ORB、轮廓提取
- 目标检测:Haar级联、HOG + SVM、DNN(深度学习)
- 相机校正 & 3D重建:立体视觉、位姿估计
- 机器学习:KNN、SVM、聚类(虽不如 scikit-learn 强,但集成方便)
4. OpenCV 的工作流程(Mermaid 流程图)
灰度化/去噪/缩放
边缘/轮廓/关键点
分类/检测/跟踪
输入: 图像/视频
预处理
特征提取
分析与识别
输出结果
显示/保存/控制指令
这个流程几乎适用于所有计算机视觉任务:
- 美颜:输入 → 人脸检测 → 皮肤区域分割 → 滤波平滑 → 输出
- 车道线检测:输入 → 边缘检测 → 霍夫变换找直线 → 输出车道线
5. 快速上手:5 行代码体验 OpenCV
安装 OpenCV(Python)
bash
pip install opencv-python
示例 1:读取并显示一张图片
python
import cv2
# 1. 读取图像(BGR格式)
img = cv2.imread('photo.jpg')
# 2. 显示图像(窗口名 + 图像变量)
cv2.imshow('My Photo', img)
# 3. 等待按键(0表示无限等待)
cv2.waitKey(0)
# 4. 关闭所有窗口
cv2.destroyAllWindows()
示例 2:实时摄像头人脸检测(使用 Haar 级联)
python
import cv2
# 加载预训练的人脸检测模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 打开摄像头(0 表示默认摄像头)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# 转为灰度图(加速检测)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 在原图上画矩形框
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 显示结果
cv2.imshow('Face Detection', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
🔍 说明 :
cv2.data.haarcascades是 OpenCV 内置的预训练模型路径,无需额外下载。
6. 学习 OpenCV 的正确姿势
学习目标明确:
- ✅ 能用 OpenCV 读写图像/视频
- ✅ 掌握常用图像处理操作(滤波、边缘、二值化)
- ✅ 会用经典算法做目标检测(如人脸、轮廓)
- ✅ 能结合深度学习模型(如 YOLO)做高级任务
学习路径建议:
- 基础操作:图像 I/O、色彩空间转换、几何变换
- 图像增强:滤波(高斯、中值)、直方图均衡化
- 特征提取:边缘(Canny)、轮廓(findContours)、角点(Harris)
- 目标检测:模板匹配、Haar、HOG
- 进阶应用:摄像头标定、光流、DNN推理
7. 常见误区提醒
- ❌ "OpenCV = 深度学习" → 不对!OpenCV 包含传统 CV 方法,也支持调用 DNN 模型,但本身不是深度学习框架。
- ❌ "颜色顺序是 RGB" → 错!OpenCV 默认使用 BGR 顺序,与 matplotlib(RGB)不同,混用需转换。
- ✅ 最佳实践:用 Jupyter Notebook + matplotlib 显示图像更直观(避免 cv2.imshow 在非 GUI 环境报错)。
python
# 在 Jupyter 中友好显示
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('photo.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转为 RGB
plt.imshow(img_rgb)
plt.axis('off')
plt.show()
总结
OpenCV 是计算机视觉的基石工具 。
它不神秘,不复杂,只要你愿意动手写几行代码,就能让计算机"看见"世界。
从自拍美颜到无人驾驶,背后都有 OpenCV 的身影。
资料关注
公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》