矩形检测
1.实验目的
实现K230对图像中的矩形进行检测。
2.实验原理
2.1 原理解析
矩形检测在图像处理任务中具有重要作用,常用于条码或二维码的预定位步骤。通过先快速检测图像中的矩形区域,可以缩小后续解码的搜索范 围,从而显著提升整体处理速度。
此外,矩形检测也是 OCR(光学字符识别)流程中的关键预处理手段之一,可用于定位文档中的文字块或段落区域,辅助后续文字识别。
CanMV 固件中的 find_rects() 函数基于类似于 AprilTag 四边形检测算法的实现,具备较强的鲁棒性。它不仅能够应对常规矩形,还能适应一定程度的平移、旋转甚至仿射变形(例如图像扭曲或倾斜),在实际应用中具有较高的准确性与稳定性。
2.2 API
find_rects 函数用于检测图像中的矩形区域。这个函数可以用于找到图像中的方形或矩形物体。
- 语法
rects = img.find_rects(threshold=2000, margin=10)
-
参数解释
- threshold: 矩形的最小面积 。默认值是
2000。 - margin: 矩形检测的边距容忍度。默认值是
10。
- threshold: 矩形的最小面积 。默认值是
-
返回值
返回一个包含矩形信息的列表。每个矩形是一个
Rect对象,包含矩形的坐标和大小。
3.代码解析
捕获一帧图像
img = sensor.snapshot()
查找矩形
for r in img.find_rects(threshold=10000):
查找图像中的矩形区域:
threshold=10000用于过滤掉弱边缘、小矩形;- 较高的阈值意味着只保留对比度高、面积大的矩形。
绘制矩形
img.draw_rectangle([v for v in r.rect()], color=(255, 0, 0))
绘制红色矩形边框(外接矩形)。
绘制圆点
for p in r.corners():
img.draw_circle(p[0], p[1], 5, color=(0, 255, 0))
绘制绿色圆点,表示矩形的四个角点。