跳到正文
XiaoGao 的个人博客

NO.16 · 计算机视觉

OpenCV 计算机视觉:从像素到特征匹配的十二课

OpenCV 计算机视觉入门笔记,12 份课件配套可运行源码,覆盖图像 I/O、绘制、颜色空间、几何变换、滤波平滑、Canny 边缘检测、形态学、阈值分割、轮廓特征、ORB 特征匹配与 Harris 角点检测。

发布 DATE
字数 WORDS
866
阅读 READ
2 分钟

计算机视觉的第一课,是学会”看”像素。这份笔记配套 12 份课件与逐章可运行的 Python 源码,从图片视频加载开始,经颜色空间、几何变换、滤波、边缘检测、形态学、阈值与轮廓,最终到达 ORB 特征匹配与 Harris 角点检测。

学习路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
输入与显示
├── 图片读取、视频读取、摄像头访问
└── OpenCV 窗口、键盘事件和资源释放
↓
图像基础
├── 几何图形与文字绘制
├── 像素访问、图像属性和通道操作
└── BGR、GRAY、HSV、Lab、YCrCb
↓
图像处理
├── 缩放、平移、旋转、透视变换和重映射
├── 均值、高斯和中值滤波
├── Canny 边缘检测
└── 腐蚀、膨胀、开闭运算和顶帽/黑帽
↓
目标分析
├── 全局、自适应和 Otsu 阈值
├── 轮廓、矩、凸包和外接矩形
├── ORB 特征、BF/FLANN 匹配
└── Harris 角点检测

章节与源码

编号 主题 源码目录 主要内容
001 图片&视频加载及展示 001-image-video-io cv.imread 读图、cv.VideoCapture 摄像头帧处理
002 图像的绘制方法 002-image-drawing 直线、矩形、圆、多边形和文本绘制
003 图像的基础操作 003-basic-image-operations 像素访问、shape/size/dtype、通道拆分合并
004 颜色空间转换 004-color-space-conversion GRAY、Lab、YCrCb、HSV 转换
005 几何变换 005-geometric-transformation 缩放、平移、旋转、透视变换、重映射
006 图像平滑 006-image-smoothing 均值、高斯、中值滤波对比
007 边缘检测 007-edge-detection Canny 算法提取边缘
008 形态学处理 008-morphological-operations 腐蚀、膨胀、开闭运算、顶帽和黑帽
009 阈值处理 009-thresholding 全局阈值、自适应阈值、Otsu
010 轮廓及特征 010-contours-and-features 矩、多边形逼近、凸包、外接矩形
011 特征匹配 011-feature-matching ORB 特征、BF 暴力匹配、FLANN 匹配
012 角点检测 012-corner-detection Harris 角点检测与标记

几个高频实战点

几何变换(第 005 课,35 页重点章节)

  • cv.resize 缩放、仿射矩阵平移、围绕中心旋转;
  • 透视变换:用四组对应点计算变换矩阵,实现”文档展平”类效果;
  • 重映射 cv.remap:用坐标映射实现翻转、压缩等自定义变换。

形态学运算速查(第 008 课)

运算 效果
腐蚀 消除小亮点,收缩前景
膨胀 填充小孔洞,扩张前景
开运算 先腐蚀后膨胀,去噪分离物体
闭运算 先膨胀后腐蚀,填充内部孔洞
顶帽 原图减开运算,突出亮细节
黑帽 闭运算减原图,突出暗细节

特征匹配(第 011 课)

ORB 提取关键点与描述符,配合汉明距离与交叉检查完成暴力匹配(BFMatcher),或用 FLANN 的 LSH 索引执行 KNN 最近邻匹配。

环境与运行

1
2
3
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # Windows PowerShell
python -m pip install opencv-python numpy matplotlib

图片路径大多是相对当前工作目录解析的,运行脚本前先进入对应章节目录:

1
2
cd src/001-image-video-io
python image_read.py

OpenCV 使用要点

  • OpenCV 默认 BGR 通道顺序,Matplotlib 按 RGB 解释,跨库显示时要注意颜色顺序;
  • cv.imread 读取失败返回空对象,应先确认路径和文件名;
  • 图像数组按 [行, 列] 即 [y, x] 访问,不要与笛卡尔坐标混淆;
  • 阈值、边缘和轮廓处理通常需要先灰度化、滤波或二值化;
  • 摄像头、GUI 窗口属于运行资源,脚本退出前应及时释放。

仓库

    ↑↓ 选择↵ 打开>theme · >random · >top · >archive