基于python-opencv实现木质工件的污渍和划痕识别和分类
缺陷识别 简介: 这个项目是我的本科毕业设计,主要针对传送带上的木质圆形工件的缺陷识别和分类,并且进行工件的计数和缺陷工件的计数。这里我主要是识别污渍和划痕 缺陷类型 污渍: 划痕: 最后的成果 sum:为工件的总个数 scratch_num:为含有划痕工件的总个数 blot_num:为含有污渍工件的总个数 黄颜色圈住的缺陷为划痕 蓝颜色圈住的缺陷为污渍 简单思路 通过边缘检测,得到每个工件的坐标,并计算出工件的中心来标记工件的ID 通过工件的每一帧位移量来确定是否为同一个工件 将每一个工件截取出来,进行缺陷的提取 将提取的缺陷进行直方图计算,通过直方图来值归一化,通过颜色值分布来分类 在本项目中,我们探讨了如何使用Python和OpenCV库来实现木质工件的污渍和划痕识别与分类。这个任务是针对传送带上移动的圆形木制品进行的,目标是自动化检测缺陷并进行计数。项目的重点在于两种类型的缺陷:污渍和划痕。 我们使用边缘检测技术来获取工件的边界。OpenCV库中的Canny边缘检测算法常被用来此目的,它可以帮助找到图像中的轮廓,从而得到每个工件的坐标。接着,通过计算工件的中心,可以为每个工件分配一个唯一的ID,以便跟踪其在传送带上的运动。利用相邻帧之间的工件位移,我们可以判断工件是否连续存在,确保同一工件在整个过程中的连续性。 接下来,项目中提到的方法是将每个独立的工件截取出来,然后对其内部的缺陷进行分析。对于缺陷的识别,主要依赖于直方图计算。划痕和污渍在颜色分布上有明显的差异,这使得可以通过颜色直方图来区分它们。例如,污渍通常具有较暗的色彩,可能集中在较低的灰度值(如50左右),而划痕可能更亮,集中在较高的灰度值(如100左右)。 为了实现分类,首先将提取出的缺陷区域转换为灰度图像,然后应用阈值处理以增强对比度。使用`cv2.findContours`函数寻找缺陷区域的轮廓,并创建一个掩模以填充这些轮廓。接下来,对填充后的图像进行直方图计算,使用`cv2.calcHist`函数,计算0通道(灰度)的直方图。通过归一化直方图,可以更好地比较不同缺陷的颜色分布。 根据直方图的统计,如果划痕的累积概率(135到255之间的灰度值)超过0.6,则标记该缺陷为划痕;同样,如果污渍的累积概率(15到90之间的灰度值)超过0.6,则标记为污渍。这些阈值可以根据实际情况调整以优化分类效果。 在完整的程序中,还包含了主程序的框架,它读取视频流,处理每一帧图像,执行上述步骤,并在屏幕上显示结果。`cv2.VideoCapture`用于加载视频,`cv2.findContours`和`cv2.RETR_EXTERNAL`、`cv2.CHAIN_APPROX`参数用于检测外部轮廓,减少计算复杂性。此外,程序还包括了字体设置、面积阈值等变量,以便过滤掉可能的噪声或小面积非工件对象。 通过这种方式,该项目实现了对木质工件缺陷的实时检测和分类,提高了生产线的质量控制效率。这种方法可以扩展应用于其他颜色或形状的工件,只需调整颜色直方图的阈值和分析策略。同时,也可以考虑结合深度学习模型进一步提高缺陷识别的准确性。
剩余7页未读,继续阅读
- 粉丝: 2
- 资源: 900
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助