代码链接见文末
1.数据与任务概述
输入为视频数据,我们需要从视频中检测出缺陷,并对缺陷进行分类。
2.整体流程
(1)视频数据读取和轮廓检测
首先,我们需要使用opencv读取视频数据,将彩色图转为灰度图后进行图像阈值处理。阈值处理是为了让前景和背景更明显的区分处理。然后,我们找到每一帧图片的轮廓信息。
(2)目标质心计算
在获取轮廓后,所获取的轮廓可能并不是我们需要检测的目标,因此,我们可以通过面积等对轮廓进行筛选。筛选出我们检测目标的轮廓。
然后是计算质心,为什么需要计算质心呢?
这是由于随着一个元件可能出现在多帧图像中,如果计数将会出现大量的重复。因此,我们通过质心去判断某个元件是否被计数。
怎么判断呢?
我们主要是通过质心移动的距离来进行判断。如果下一帧图像元件的质心与上一帧图像元件的质心相隔较近,那么这是同一个元件。我们还需要注意,我们只统计完全出现的元件(质心x坐标>元件的宽度)
对于新的元件,我们截取这个元件,并进行缺陷检测。
(3)缺陷检测
缺陷检测流程如下:
- 首先,读取截取下来的缺陷图片,经过图像阈值处理后,检测出轮廓。对轮廓根据面积进行筛选,筛选出缺陷所在的轮廓。通过轮廓的外接四边形截取出缺陷
- 获得缺陷的图