- 需求分析
设计一个基于Qt框架和OpenCV库的残缺字符检测系统,具备较完善的系统界面。系统分为模板设计和系统检测两部分,可以实现读取模板图片、设定区域、保存及读取配置文件、生成区域的模板图像、读取检测图片(可直接拖入检测图片)、判断倾斜及旋转矫正、提取产品区域、模板匹配定位、计算及提取字符检测区域、对字符检测区域进行图像处理并结合模板中设定的模板图像进行字符残缺检测(通过检测的在图片上写PASS、有残缺的写ERROR并在残缺处画圈),最后根据检测结果在主界面进行不同提示并记录检测结果。
- 框架设计
- 模板设计
1.设计思路
模板设计部分主要在mcfg类,负责定义和操作检测区域的模板。以下是设计思路:
1.1 初始化配置 (mcfg构造函数): 设置UI界面,初始化图像路径和配置文件路径,清空区域列表。
1.2 加载配置 (getconfig方法): 从配置文件中读取区域信息,包括区域名称、类型、坐标、宽度和高度,并存储在areaList中。
1.3 显示图像 (on_btn_readimg_clicked方法): 加载并显示配置界面中的图像,为用户定义模板区域提供可视化基础。
1.4 绘制矩形 (drawrect方法): 当用户在图像上选择区域时,绘制矩形框并实时更新UI以显示当前选择。
1.5 定义区域 (mousePressEvent, mouseMoveEvent, mouseReleaseEvent方法): 捕获鼠标事件来定义区域的起始点和结束点。
1.6 配置区域信息 (on_btn_conf_clicked方法): 用户确认选择的区域后,将区域信息添加到列表,并更新表格显示。
1.7 保存配置 (on_btn_save_clicked方法): 将用户定义的所有区域信息保存回配置文件,以便后续使用。
1.8 表格交互 (on_tableWidget_clicked方法): 用户可以通过点击表格中的区域信息来选择和编辑现有区域。
1.9 删除区域 (on_btn_del_clicked方法): 允许用户从列表和表格中删除不需要的区域。
2.流程图
3.模块功能说明
3.1 读取模板图片:加载模板图片以便进行区域设定和模板生成。
3.2 设定区域:在模板图片上定义感兴趣区域(例如,字符区域)。
3.3 保存及读取配置文件:保存设定区域的配置到文件,并能从文件中读取配置。
3.4 生成区域的模板图像:根据设定的区域生成模板图像,用于后续的匹配和残缺检测。
(二)检测模块
1.设计思路
系统检测部分主要在Widget类,负责执行实际的图像处理和检测逻辑。以下是设计思路:
1.1 图像读取 (on_btn_readimg_clicked方法): 用户可以通过文件对话框选择图像文件,或通过拖放功能加载图像。
1.2 图像预处理 (getHmat方法): 对图像进行旋转和摆正操作,以确保后续处理的准确性。
1.3 截取检测区域 (getTmat方法): 根据配置的区域信息,从预处理后的图像中截取需要检测的区域。
1.4