在注塑车间里,产品表面可能出现飞边、缩水、气泡、划痕等缺陷。利用Python可以快速搭建一套基于图像处理的自动识别系统,替代部分人工目检工作。基本思路是采集图像、做预处理、提取缺陷特征,再用规则或模型判断是否存在不良品。

一、图像采集与基础预处理
首先要通过工业相机在固定光源下拍摄注塑件表面。得到图像后,一般用OpenCV做基础处理,方便后续分析。
import cv2
# 读取图像
img = cv2.imread('part.jpg')
# 转为灰度图,减少计算量
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯滤波降噪
blur = cv2.GaussianBlur(gray, (5, 5), 0)
print('预处理完成,尺寸:', blur.shape)
二、利用边缘与轮廓找缺陷
很多表面缺陷在边缘和亮度上和正常区域不同。可以用边缘检测加轮廓筛选,找出可疑区域。
# Canny边缘检测
edges = cv2.Canny(blur, 50, 150)
# 查找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 过滤小轮廓,认为面积过大或过小可能为缺陷
defects = []
for c in contours:
area = cv2.contourArea(c)
if area > 100:
defects.append(c)
print('发现可疑缺陷数量:', len(defects))
常见缺陷与图像特征对照
| 缺陷类型 | 图像表现 | 识别思路 |
|---|---|---|
| 飞边 | 边缘出现多余亮带 | 轮廓超出模板边界 |
| 缩痕 | 局部灰度偏低 | 区域均值低于阈值 |
| 气泡 | 圆形高亮或暗斑 | 圆度与面积筛选 |
三、引入深度学习提升准确率
当缺陷形态复杂时,传统图像处理规则容易误判。可使用Python的torch加载预训练模型做语义分割,把缺陷区域标出来。
import torch
# 假设已有训练好的模型
model = torch.load('defect_seg.pth')
model.eval()
# 输入张量 x 为预处理后的图像
# out = model(x)
# 用阈值得到缺陷掩码
# mask = (out > 0.5).float()
四、落地建议
- 保证拍摄光源稳定,减少反光干扰
- 先用量大且明确的缺陷做规则识别,再逐步上模型
- 将识别结果写回MES系统,形成闭环
Python识别注塑产品表面缺陷的核心,是用尽量低的成本把明显不良挑出来,再借助模型覆盖难例。
通过上述流程,工程师可以用Python在几天内搭出可用原型,后续再按产线实际数据迭代优化。