精密制造行业的一个真实需求:圆孔内壁毛刺检测。
人工目检效率低、标准不一、容易疲劳。用机器视觉自动化检测,是刚需。
一、项目背景
在光学、半导体、医疗器件行业,圆孔内壁的毛刺直接影响产品质量。传统人工目检有三个硬伤:
-
效率低:速度慢,跟不上批量生产
-
主观性强:不同人标准不一样
-
易疲劳:长时间盯着看,漏检率上升
这套系统用机器视觉替代人眼,实现自动化检测。
二、核心功能
| 功能模块 | 需求描述 |
|---|---|
| 批量图像管理 | 选择文件夹,自动加载常见格式图片 |
| 单张/批量检测 | 支持单张触发或全自动批量处理 |
| 重新检测 | 强制重新检测所有图像 |
| 毛刺检测算法 | 自动定位圆孔并检测缺陷 |
| 评级与合格判定 | 量化评级,自动判定合格/不合格 |
| 结果展示 | 表格展示检测结果,图像预览 |
| 外部控制 | 联动外部定位软件 |
三、MVC架构
text
┌─────────────────────────────────────────────────────────────┐ │ MVC 架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Model │ │ View │ │ Controller │ │ │ │ 数据+算法 │ │ 界面展示 │ │ 业务逻辑 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ detector.py main_window.py main.py │ │ external_controller dialogs.py batch_worker.py │ │ │ └─────────────────────────────────────────────────────────────┘
各层职责:
-
Model:
detector.py(检测算法)、external_controller.py(外部控制) -
View:
main_window.py(主界面)、dialogs.py(配置对话框) -
Controller:
main.py(入口和事件路由)、batch_worker.py(批量任务管理)
四、模块职责
4.1 主入口(main.py)
python
import sys
import logging
from PyQt6.QtWidgets import QApplication
from main_window import MainWindow
if __name__ == '__main__':
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('logs/app.log'),
logging.StreamHandler()
]
)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
4.2 模块清单
| 模块 | 职责 |
|---|---|
main.py | 程序入口,启动日志,创建主窗口 |
main_window.py | 主界面集成,事件响应 |
detector.py | 圆孔定位 + 毛刺检测算法 |
batch_worker.py | 多线程批量处理 |
external_controller.py | uiautomation封装,控制外部软件 |
dialogs.py | 参数配置对话框 |
五、数据流与交互流程
用户选择目录
│
▼
扫描图像文件 → 刷新表格显示
│
▼
触发检测(单张/批量)
│
▼
Detector.detect_single_image()
│
▼
结果返回 → 更新界面展示
│
▼
选中表格行 → 显示原图 + 标注图
│
▼
点击"发送定位" → ExternalController
│
▼
查找外部软件控件 → 执行定位
关键交互点:
-
选择目录 → 自动加载图像列表
-
点击检测 → 调用Detector算法 → 更新表格
-
选中行 → 显示对应的原图和检测结果图
-
发送定位 → 通过uiautomation联动外部软件
六、技术选型
| 技术项 | 选择 | 理由 |
|---|---|---|
| 编程语言 | Python 3.10+ | 开发快,库多 |
| GUI框架 | PyQt6 | 控件丰富,信号槽完善 |
| 图像处理 | OpenCV 4.8+ | 功能全,性能好 |
| 科学计算 | NumPy | 数组运算高效 |
| UI自动化 | uiautomation | Windows原生控件操作 |
七、文件结构
├── main.py # 程序入口 ├── main_window.py # 主窗口界面 ├── detector.py # 检测核心算法 ├── batch_worker.py # 批量处理线程 ├── external_controller.py # 外部软件控制 ├── dialogs.py # 参数配置对话框 ├── requirements.txt # 依赖列表 ├── .venv/ # 虚拟环境 ├── logs/ # 日志目录 ├── results/ # 检测结果保存目录 └── articles/ # 技术文档目录
八、踩坑记录(提前预警)
-
外部软件联动:
uiautomation依赖Windows系统,打包后路径问题要处理好 -
批量处理卡界面:用
QThread做后台任务,别在主线程跑循环 -
日志目录不存在:启动时检查
logs/目录,没有就创建 -
大图像加载慢:表格显示缩略图,原图按需加载
下篇预告
下一篇写图像处理核心算法——圆孔定位技术:RANSAC圆拟合、自适应阈值、毛刺检测逻辑。
如果对架构设计有不同思路,评论区聊。
3879

被折叠的 条评论
为什么被折叠?



