NO.16 · 计算机视觉
OpenCV 计算机视觉:从像素到特征匹配的十二课
OpenCV 计算机视觉入门笔记,12 份课件配套可运行源码,覆盖图像 I/O、绘制、颜色空间、几何变换、滤波平滑、Canny 边缘检测、形态学、阈值分割、轮廓特征、ORB 特征匹配与 Harris 角点检测。
计算机视觉的第一课,是学会”看”像素。这份笔记配套 12 份课件与逐章可运行的 Python 源码,从图片视频加载开始,经颜色空间、几何变换、滤波、边缘检测、形态学、阈值与轮廓,最终到达 ORB 特征匹配与 Harris 角点检测。
学习路线
1 | 输入与显示 |
章节与源码
| 编号 | 主题 | 源码目录 | 主要内容 |
|---|---|---|---|
| 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 | python -m venv .venv |
图片路径大多是相对当前工作目录解析的,运行脚本前先进入对应章节目录:
1 | cd src/001-image-video-io |
OpenCV 使用要点
- OpenCV 默认 BGR 通道顺序,Matplotlib 按 RGB 解释,跨库显示时要注意颜色顺序;
cv.imread读取失败返回空对象,应先确认路径和文件名;- 图像数组按
[行, 列]即[y, x]访问,不要与笛卡尔坐标混淆; - 阈值、边缘和轮廓处理通常需要先灰度化、滤波或二值化;
- 摄像头、GUI 窗口属于运行资源,脚本退出前应及时释放。