OpenCV4工业缺陷检测的六种方法【文末送书】

2023-12-19

目录

1、机器视觉

2、缺陷检测

三、工业上常见缺陷检测方法

方法一:基于简单二值图像分析实现划痕提取,效果如下:

方法二:复杂背景下的图像缺陷分析,基于频域增强的方法实现缺陷检测,运行截图:

方法三:复杂背景下的图像缺陷分析,基于空域增强实现图像缺陷分析,针对复杂背景的图像,通过空域滤波增强以后实现缺陷查找,运行截图如下:

方法四:基于样品模板比对实现基于空域增强实现图像缺陷分析,通过二之分析与轮廓比对实现缺陷查找,运行截图如下:

方法五:基于深度学习UNet模型网络,实现裂纹与划痕检测,运行截图如下:

方法六:基于深度学习实例分割网络模型网络,实现细微缺陷检测,运行截图如下:

四、延伸阅读

参与方式????


推荐一个人工智能学习网站

https://www.captainbed.cn/bear icon-default.png?t=N7T8 https://www.captainbed.cn/bear

1、机器视觉

机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工业品的缺陷检测极大的依赖人工完成,特别是传统的3C制造环节,产品缺陷检测依赖于人眼睛来发现与检测,不仅费时费力还面临人员成本与工作时间等因素的制约。

使用机器视觉来实现产品缺陷检测,可以节约大量时间跟人员成本,实现生产过程的自动化与流水线作业。


2、缺陷检测

常见得工业品缺陷主要包括划痕、脏污、缺失、凹坑、裂纹等,这些依赖人工目检(眼睛检测)的缺陷都可以通过机器视觉的缺陷检测算法来实现替代。当前工业缺陷检测算法目前主要分为两个方向,基于传统视觉的算法和基于深度学习的算法,前者主要依靠对检测目标的特征进行量化,比如颜色,形状,长宽,角度,面积等,好处是可解释性强、对样本数量没有要求、运行速度快,缺点是依赖于固定的光照成像,稍有改动就要改写程序重新部署,而且检测规则和算法跟开发者经验其主导作用。基于深度学习的缺陷检测算法刚好能弥补前者的不足之处,能够很好适应不同的光照,更好地适配同类缺陷要求,缺点是对样本数量有一定要求,对硬件配置相比传统也会有一定要求。

《OpenCV应用开发:入门、进阶与工程化实践》一书第十四 章 通过案例详细介绍基于OpenCV如何实现传统方式的缺陷检测跟基于深度学习的缺陷检测。

图片


三、工业上常见缺陷检测方法

方法一:基于简单二值图像分析实现划痕提取,效果如下:

图片

方法二:复杂背景下的图像缺陷分析,基于频域增强的方法实现缺陷检测,运行截图:

图片

方法三:复杂背景下的图像缺陷分析,基于空域增强实现图像缺陷分析,针对复杂背景的图像,通过空域滤波增强以后实现缺陷查找,运行截图如下:

图片

方法四:基于样品模板比对实现基于空域增强实现图像缺陷分析,通过二之分析与轮廓比对实现缺陷查找,运行截图如下:

图片

方法五:基于深度学习UNet模型网络,实现裂纹与划痕检测,运行截图如下:

图片

方法六:基于深度学习实例分割网络模型网络,实现细微缺陷检测,运行截图如下:

图片

以上内容均来自最近出版的一本新书《OpenCV应用开发:入门、进阶与工程化实践》一书第十四章,分享给大家。


四、延伸阅读

图片

OpenCV4应用开发:入门、进阶与工程化实践

贾志刚 张振 著

工业界和学术界专家联袂推荐

一线开发专家与金牌讲师撰写,一站式解决OpenCV工程化开发痛点

推荐语:

以工业级视觉应用开发所需知识点为主线,讲透OpenCV相关核心模块,案例化详解1000个常用函数、深度学习知识以及模型的推理与加速。

本书专注于介绍OpenCV4在工业领域的常用模块,通过合理的章节设置构建了阶梯式的知识点学习路径。化繁就简、案例驱动,注重算法原理、代码演示及在相关场景的实际使用。本书还介绍了必备的深度学习知识与开发技巧,拓展OpenCV开发者技能。



参与方式????

抽奖方式:评论区随机抽取若干名小伙伴送出!!

参与方式:关注博主、点赞、收藏、评论区评论!!!

(切记要点赞 + 收藏,否则中奖无效,每人最多评论三次!!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV4工业缺陷检测的六种方法【文末送书】 的相关文章

  • 更改 cmd 的当前工作目录(从子进程)

    所以我想写一个cd可以使用 cmd 执行的类似程序 并且在退出后 应该更改调用 cmd 进程的工作目录 现在 在这篇文章被标记为重复之前 我知道this https stackoverflow com questions 25944172
  • AddIdentity 与 AddIdentityCore

    在ASP NET Core中 可以添加各种服务进行识别 AddDefaultIdentity AddIdentity and AddIdentityCore 有什么区别AddIdentity and AddIdentityCore AddI
  • 无法将图像解析为 URL:to_model 委托给附件,但在 Rails 5.2 中附件为零

    我有以下表格 div h2 prohibited this user from being saved h2 ul li li ul div
  • 确定 postgres 数值最大值最小值

    在我的 PostgreSQL 表之一中 有一个数据类型为 Numeric 20 10 的属性结果 其输入值之一可以是 无穷大 我想知道长度 20 10 的最大值和最小值是多少 对于一个数字numeric precision scale 极限
  • 如何将向量 转换为向量 /string

    我们有一个遗留方法 它返回一个vectorchar 指针 即vector
  • 学习 C++:返回引用并绕过切片

    我在理解参考资料方面遇到了困难 考虑以下代码 class Animal public virtual void makeSound cout lt lt rawr lt lt endl class Dog public Animal pub
  • 带单引号的 Perl 单行代码

    我使用 Perl 单行语句创建 SQL 语句 但无法包含单引号 这就是我想要的 获取第一个字段并为其添加引号 echo a b perl F lane print F 0 a 我尝试了几种不同的方法 但对我来说没有用 echo a b pe
  • 邮递员表单数据有效,但原始等效项无效

    我有一个正在测试的 API 如果我通过 表单数据 提交具有以下值的数据 则它可以工作 key response comment value This is a test 但是 如果我在 原始 选项卡中使用以下结构执行一些自定义 JSON 则
  • 将非 www/ssl/尾部斜杠的重写与 .htaccess 中的大写->小写结合起来

    因此 我有一个简单的重写来捕获非 www URL 非 SSL url 和缺少尾部斜杠的 url 以重定向到 SSL www 和尾部斜杠 使用
  • 从后端到前端 Yii2 高级应用程序

    我正在尝试将一些控制器从前端链接到后端 几个小时后我不知道问题出在哪里 Backend file main php urlManager gt enablePrettyUrl gt false showScriptName gt false
  • C 中类型转换时的运算符优先级

    下面的代码给出了正确的乘法结果 int var0 245895 int var1 478565 long long val 0 val long long var0 var1 但这篇文章给出了错误的结果 int var0 245895 in
  • MatTable 上的多个过滤器

    我一直在尝试应用多列过滤 即列标题中的文本输入将仅过滤列的内容 到目前为止 我已经能够通过覆盖来使其工作filterPredicate of MatTableDataSource但是一旦我覆盖跨列的默认过滤就不再起作用 export cla
  • firefox flex 不会随着滚动条而增长

    我遇到了特定于 Firefox 的问题 据我所知 在 Chrome 中 如果你有 flex 0 0 auto overflow auto 当 y 方向溢出时 它会占用滚动条的额外宽度 一切都很好 但在 Firefox 中 它不会考虑额外的宽
  • 在 Promise 中断言函数调用

    我正在为异步 Node js 函数编写一些测试 该函数使用 Mocha Chai 和 Sinon 库返回承诺 假设这是我的功能 function foo params return mkdir params then dir gt writ
  • JBoss数据库连接池

    我是 jboss 的新手 我被要求将 jboss 连接池机制与现有的 Web 应用程序合并 考虑到 Web 应用程序数据库层已正确编写 即所有结果集 语句和连接在不需要时正确关闭 在正确配置 jboss 数据源后 我必须在 Web 应用程序
  • Android 中的静电安全吗?

    我在代码中使用一个静态类来定义一个静态字段 我在 Activity onStop onStart 调用之间重用该静态字段 这是一个场景 用户点击 授权 按钮 静态数据初始化 活动停止并调用 Web 浏览器 浏览器执行回调 Activity恢
  • 从客户端检索 Kafka 代理属性

    我想知道是否有一种方法可以使用 shell 命令检索 kafka 代理的所有配置属性 例如 类似的东西 kafka configs sh zookeeper broker ip 2181 entity type brokers descri
  • 无法将工件从中央 IntelliJ 传输到中央 IntelliJ

    我的 Spring boot 项目使用 Maven 当我使用 IntelliJ Community 构建它时 出现错误 无法将工件 com jolira hickory pom 1 0 0 从 转移到中央 https repo maven
  • scanf("%[^\n]",name); 的区别和 scanf(" %[^\n]",名称);

    这不是一个错字 对于那些没有注意到的人来说 第二个上有一个空格 第一个上没有空格 当我做作业时 我会遇到这样的情况 include

随机推荐

  • JSplitPane + MiGLayout:如何启用自动调整大小

    我在这里做错了 我想在 JFrame 中的 JPanel 中的 JSplitPane 中有两个 JButton 其中按钮填充 JSplitPane 这是调整 JFrame 大小时得到的结果 按钮保持正常大小 并且 JSplitPane 不允
  • 无法在 Windows 7 上注册 Sybase 15 ASE OLE DB 驱动程序

    我正在尝试在我的 Windows 7 计算机上设置 Sybase 15 ASE OLE DB 驱动程序 我的 32 位 ODBC 数据源管理器 C Windows SysWOW64 odbcad32 exe 的 驱动程序 选项卡中已列出了
  • 使用 Eclipselink Moxy 如何将 xml 内容映射到与值不同的名称?

    在我的 Xml 中我有
  • 【华为数据之道学习笔记】5-9图模型设计

    图模型作为当前流行的信息处理加工技术 自提出以来 迅速在 学术界和工业界得到了普及 在智能推荐 决策分析等方面有着广泛的应用 图模型由节点和边组成 节点表示实体或概念 边则由属性或关 系构成 实体指的是具有可区别性且独立存在的某种事物 如某
  • 压缩炸弹,Java怎么防止

    压缩炸弹 Java怎么防止 什么是压缩炸弹 会有什么危害 什么是压缩炸弹 压缩炸弹 ZIP 一个压缩包只有几十KB 但是解压缩后有几十GB 甚至可以去到几百TB 直接撑爆硬盘 或者是在解压过程中CPU飙到100 造成服务器宕机 虽然系统功能
  • Redis设计与实现之Lua 脚本

    目录 一 Lua 脚本 1 初始化 Lua 环境 2 脚本的安全性 3 脚本的执行 4 EVAL 命令的实现 定义 Lua 函数 执行 Lua 函数 5 EVALSHA 命令的实现 二 小结 一 Lua 脚本 Lua 脚本功能是 Reids
  • 鸿蒙崛起,高校加入培养大军

    前言 近日 华为消费者业务CEO余承东宣布 明年华为将推出鸿蒙原生应用与原生体验的产品 标志着鸿蒙生态正式迈入发展的快车道 与此同时 国内主流的App已经开始着手研发纯鸿蒙系统版本 高校也积极参与 加入鸿蒙的培养大军 鸿蒙 作为华为推动的自
  • Flutter完整开发实战详解(一、Dart语言和Flutter基础)

    前言 在如今的 Fultter 大潮下 本系列是让你看完会安心的文章 本系列将完整讲述 如何快速从0开发一个完整的 Flutter APP 配套高完成度 Flutter 开源项目 GSYGithubAppFlutter 同时也会提供一些Fl
  • 机器学习笔记 - 用于时间序列分析的深度学习技术

    一 简述 过去 时间序列分析采用自回归综合移动平均线等传统统计方法 然而 随着深度学习的出现 研究人员探索了各种神经网络架构来建模和预测时间序列数据 深度学习技术 例如 LSTM 长短期记忆 卷积神经网络和自动编码器 已经在时间序列预测 异
  • 鸿蒙开发入门:deviceConfig内部结构

    deviceConfig内部结构 deviceConfig包含设备上的应用配置信息 可以包含default tv car wearable等属性 default标签内的配置适用于所有通用设备 其他设备类型如果有特殊的需求 则需要在该设备类型
  • 基于springboot的网络阅读与写作平台【论文、源码、开题报告】

    博主介绍 全网个人号和企业号 粉丝40W 每年辅导几千名大学生较好的完成毕业设计 专注计算机软件领域的项目研发 不断的进行新技术的项目实战 热门专栏 推荐订阅 订阅收藏起来 防止下次找不到 千套JAVA实战项目持续更新中 上百套小程序实战项
  • 2023年12月18日-12月24日(项目需求+ue5底层渲染)

    周一 进行了renderdoc dx11试验 发现是汇编模式 周二 7 23 8 00ue5底层渲染02A19 02B03
  • Apache Flink(十五):Flink任务提交模式

    个人主页 IT贫道 大数据OLAP体系技术栈 Apache Doris Clickhouse 技术 CSDN博客 私聊博主 加入大数据技术讨论群聊 获取更多大数据资料 博主个人B栈地址 豹哥教你大数据的个人空间 豹哥教你大数据个人主页 哔哩
  • js刷新当前页面

    js刷新当前页面 大家好 我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3 0的小编 也是冬天不穿秋裤 天冷也要风度的程序猿 深入解析JS刷新当前页面 在网页世界中畅游的技巧 作为Web开发者 我们时常需要通过JavaScript来操作页
  • easyrecovery软件2025免费版电脑数据恢复软件

    easyrecovery14是easyrecovery系列软件的新版本 也是目前行业领先的数据恢复软件 具备更快捷 更高效 更便捷三大特色 能够帮助用户轻松恢复电脑丢失的数据 目前软件支持恢复不同存储介质数据 包括硬盘 光盘 U盘 移动硬盘
  • Docker与云计算平台集成:AWS、Azure、GCP完全指南

    Docker和云计算平台的结合 如AWS Amazon Web Services Azure Microsoft Azure 和GCP Google Cloud Platform 为现代应用的构建和部署提供了巨大的便利性 本文将深入研究如何
  • 华为OD机试 Python 【最大载货量】

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • 汽车UDS诊断——SecureDataTransmission 加密数据传输(0x84)

    诊断协议那些事儿 诊断协议那些事儿专栏系列文章 本文介绍诊断和通讯管理功能单元下的84服务SecureDataTransmission 在常规诊断通信中 数据极易被第三方获取 所以在一些特殊的数据传输时 标准定义了加密数据传输的服务 简而言
  • php中文乱码或html中文乱码

    参考gpt 一 在PHP中解决中文乱码问题的常见方案有以下几种 设置字符编码 在你的PHP代码中 可以使用 header 函数设置正确的字符编码 常见的字符编码是UTF 8 可以使用以下代码将页面的字符编码设置为UTF 8 header C
  • OpenCV4工业缺陷检测的六种方法【文末送书】

    目录 1 机器视觉 2 缺陷检测 三 工业上常见缺陷检测方法 方法一 基于简单二值图像分析实现划痕提取 效果如下 方法二 复杂背景下的图像缺陷分析 基于频域增强的方法实现缺陷检测 运行截图 方法三 复杂背景下的图像缺陷分析 基于空域增强实现