C++OpencvPCB板子引脚缺陷检测

首先感谢杉木~,若侵权,请联系删除。
论文里面提出利用区域生长法获取引脚的总数及各个引脚主体部分的形心坐标及面积。通过与实际引脚总数进行对比, 判断是否存在引脚缺失的缺陷, 并和实际引脚的间距、面积的设定值进行对比, 当测定值超过设定值一定范围时, 认为该芯片存在引脚位置偏移以及高度偏移等缺陷。
与作者不同之处在于我使用提取轮廓,构建掩膜图像的方式获取引脚的主体部分,其余部分均按照论文思路判别缺陷。
步骤:

  1. 图像预处理;
  2. 提取轮廓,构建掩膜图像,获取引脚主体;
  3. 引脚分割为4个ROI,排序,获取引脚质心;
  4. 通过引脚数目 ,面积,质心间距指标分别判别缺脚,高度偏移,位置偏移;
  5. 通过拟合4个ROI内引脚质心,获取4线方程,从而获取芯片中心坐标,即可获得相对参考坐标的偏移量;
  6. 选择上下两线的斜率平均值,即可获取芯片的旋转量
void find(Mat &src, vector>con_new) {
	int num = con_new.size();
	cout << "num = " << num << endl;
	//缺脚判断
	vectormu(con_new.size());
	vectormc(con_new.size());
	double area = 0;
	if (num == 12) {
		//偏移判断
		for (int i = 0; i < con_new.size(); i++) {
			area = co

你可能感兴趣的:(机器视觉,C++OpenCV项目实战,c++,opencv,缺陷检测)