docs: insert 51 output images from asset/ into README.md and 教案.md with captions
This commit is contained in:
92
README.md
92
README.md
@@ -398,6 +398,12 @@ explorer.exe .
|
||||
|
||||
> **提示**:把 `\\wsl$\Ubuntu\home\你的用户名\vision-training-2026-opencvcpp` 收藏到快速访问栏,后面每个实验都能快速查看输出图片。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 程序生成的测试图 | 读取后再保存的验证图 |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
### 6.6 试试用自己的图片
|
||||
|
||||
把任何一张 `.jpg` 图片复制到 `exp1_read_write/build/` 目录下,然后修改 `main.cpp` 中的文件名,重新编译运行,看看能不能读写你自己的图片。
|
||||
@@ -484,6 +490,20 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
重点看 `hsv_channel_H.jpg`、`hsv_channel_S.jpg`、`hsv_channel_V.jpg` 三张图,理解 HSV 每个通道"长什么样"。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始彩色图 | 灰度转换 | HSV转换 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| H通道(色相) | S通道(饱和度) | V通道(明度) |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| Lab转换 | YCrCb转换 |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
---
|
||||
|
||||
## 8. 第 3 讲:高斯模糊
|
||||
@@ -557,6 +577,16 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
查看 `original.jpg` → `blur_3x3.jpg` → `blur_9x9.jpg` → `blur_21x21.jpg`,对比噪点的消失过程。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始图片(含散点噪声) | 轻微模糊 (ksize=3×3) | 中度模糊 (ksize=9×9) |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| 重度模糊 (ksize=21×21) | 各向异性模糊 (sigmaX=15, sigmaY=3) |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
---
|
||||
|
||||
## 9. 第 4 讲:Canny 边缘检测
|
||||
@@ -636,6 +666,20 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
对比 `edges_low.jpg`、`edges_mid.jpg`、`edges_high.jpg`、`edges_after_blur.jpg`,理解阈值如何影响结果。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始彩色图 | 灰度转换 |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
| 低阈值 (50/150) | 中等阈值 (100/200) | 高阈值 (200/400) |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| 高斯模糊后 | 先模糊再Canny |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
---
|
||||
|
||||
## 10. 第 5 讲:图像阈值化
|
||||
@@ -701,6 +745,16 @@ cmake .. && make -j$(nproc)
|
||||
./exp5
|
||||
```
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 灰度渐变图 | THRESH_BINARY | THRESH_BINARY_INV |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| THRESH_TRUNC | THRESH_TOZERO | THRESH_TOZERO_INV |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
---
|
||||
|
||||
## 11. 第 6 讲:形态学操作——腐蚀与膨胀
|
||||
@@ -783,6 +837,16 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
依次查看 `binary.jpg` → `eroded.jpg` → `dilated.jpg` → `opened.jpg` → `closed.jpg`。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始二值图 | 腐蚀后 | 膨胀后 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| 开运算 | 闭运算 | 3次腐蚀 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
---
|
||||
|
||||
## 12. 第 7 讲:颜色提取——inRange(核心!)
|
||||
@@ -934,6 +998,20 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
**思考题**:为什么 `mask_red1.jpg` 和 `mask_red2.jpg` 分别只能捕获一部分红色?合并后才完整?你能在色相环上画出来吗?
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始彩色图 | HSV转换 |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
| 红色范围1 (H 0~10) | 红色范围2 (H 160~180) | 合并后的红色mask |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| 提取的红色区域 | 蓝色mask | 提取的蓝色区域 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
---
|
||||
|
||||
## 13. 第 8 讲:综合流水线——串联一切
|
||||
@@ -1091,6 +1169,20 @@ cmake .. && make -j$(nproc)
|
||||
|
||||
> **挑战题**:如果检测到的框数量不对(比如只有一个或零个),试着修改 `main.cpp` 中的筛选参数(面积阈值 100 和长宽比阈值 2),重新编译运行,看效果怎么变化。这就是"调参"——RoboMaster 视觉组的基本功。
|
||||
|
||||
**运行结果预览**:
|
||||
|
||||
| 原始模拟场景 | HSV转换 | 高斯模糊后 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| inRange原始mask | 开运算去噪 | 闭运算填充 |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
| 提取的红色区域 | mask边缘检测 | 最终结果(绿框=检测到的灯条) |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
---
|
||||
|
||||
## 14. 课堂总结与下一步
|
||||
|
||||
Reference in New Issue
Block a user