当前位置: 首页 > article >正文

实际操作 检测缺陷刀片

号he

找到目标图像的缺陷位置,首先思路为对图像进行预处理,灰度-二值化-针对图像进行轮廓分析

//定义结构元素
Mat se = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
morphologyEx(thre, tc, MORPH_OPEN, se, Point(-1, -1), 1);

目标图形为矩形,RECT,大概在3,3可以自己调整 位置在中心-1,-1.与开操作对图像进行处理

if (rect.height > (height / 2)) {
            continue;
        }
        if (area < 150) {
            continue;
        }根据不同的素材来做筛选,例如此类型就是以图形的行和面积来作为筛选条件,

1,rectangle(frame, rect, Scalar(0, 0, 255), 2, 8, 0);
drawContours(image, contours, t, Scalar(0, 0, 255), 2, 8);效果

2,rectangle(frame, rect, Scalar(0, 0, 255), 2, 8, 0);
drawContours(frame, contours, t, Scalar(0, 0, 255), 2, 8);效果

做好框架处理后进行目标工件的排序处理,此列以冒泡排序从小到大排序

void sort_box(vector<Rect>& boxes) {
    int size = boxes.size();
    for (int i = 0; i < size - 1; i++) {
        for (int j = i; j < size; j++) {
            int x = boxes[j].x;
            int y = boxes[j].y;
            if (y < boxes[i].y) {
                Rect temp = boxes[i];
                boxes[i] = boxes[j];
                boxes[j] = temp;
            }
        }
    }
}

进行排序好后可以从putText来验证排序结果,初始为6-0,改好后为0-6



前期的图像处理完毕,后面的思路要对模板图像以及后面的图像进行对比生成mask来确认具有缺陷的刀片。

tpl为刚才观察到的形态良好的工件,将其提取后与其他工件进行对比做差,对Mask进行开操作后观察

将白色部分的尺寸打印出来作为筛选

将白色像素大于50的打印出来

 

运行后发现出现了误检测,因为刀片宽度不统一,所以容易识别错误,所以需要在已经检测到的关键框架进行进一步的筛选。很明显的可以看到最后一个被误检测。首先对筛选出来的图像进行进一步处理

这样可以通过find来更加严谨的找到我们需要的有缺陷的工件。


http://www.kler.cn/a/532937.html

相关文章:

  • 蓝桥与力扣刷题(141 环形链表)
  • 可视化大屏在石油方面的应用。
  • 【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
  • AnswerRocket:通过 AI 辅助简化分析
  • C++泛型编程指南09 类模板实现和使用友元
  • 如何在电脑上部署deepseek
  • 【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】
  • 新手STM32:基于HAL库的定时器和PWM输出
  • 利用Docker简化机器学习应用程序的部署和可扩展性
  • 项目中常用中间件有哪些?分别起什么作用?
  • (10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例
  • Mac M1 ComfyUI 中 AnyText插件安装问题汇总?
  • Unity 2D实战小游戏开发跳跳鸟 - 计分逻辑开发
  • 1.PPT:天河二号介绍【12】
  • Vue - toRaw 与 markRaw
  • Kubeflow——K8S的机器学习利器
  • 人工智能基础知识速成 - 机器学习、深度学习算法原理及其实际应用案例
  • 2025年最新Stable Diffusion 新手入门教程,安装使用及模型下载
  • 【鸿蒙HarmonyOS Next实战开发】Web组件H5界面与原生交互-抽奖页面
  • Fastdds学习分享_xtpes_发布订阅模式及rpc模式
  • unity报错不存在类型或者命名空间
  • Java集合概述(Ⅱ)
  • 企业资金管理-司库(Treasury)
  • RESTful API的设计原则与这些原则在Java中的应用
  • MQTT实战之在vue和java中使用
  • 编程语言中制表符的打印和输出@C#为例进行说明