0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

复杂背景下缺陷检测将Halcon实现转为OpenCV的实例

新机器视觉 来源:OpenCV与AI深度学习 作者:Color Space 2021-06-30 14:05 次阅读

导读 本文主要介绍一个复杂背景下缺陷检测的实例,并将Halcon实现转为OpenCV。

实例来源

实例来源于51Halcon论坛的讨论贴: https://www.51halcon.com/forum.php?mod=viewthread&tid=1173&extra=page%3D1

Halcon实现

参考回帖内容,将代码精简如下:

read_image (Image, ‘。/1.bmp’)dev_set_line_width (3)threshold (Image, Region, 30, 255)reduce_domain (Image, Region, ImageReduced)mean_image (ImageReduced, ImageMean, 200, 200)dyn_threshold (ImageReduced, ImageMean, SmallRaw, 35, ‘dark’)opening_circle (SmallRaw, RegionOpening, 8)closing_circle (RegionOpening, RegionClosing, 10)connection (RegionClosing, ConnectedRegions)dev_set_color (‘red’)dev_display (Image)dev_set_draw (‘margin’)dev_display (ConnectedRegions)

OpenCV实现

分析实现方法与思路: [1] 原图转灰度图后使用核大小201做中值滤波; [2] 灰度图与滤波图像做差,然后阈值处理 [3] 圆形核做开运算,去除杂讯 [4] 圆形核做闭运算,缺陷连接 [5] 轮廓查找绘制 实现代码(Python-OpenCV):

import cv2import numpy as np

img = cv2.imread(‘。/1.bmp’)cv2.imshow(‘src’,img)gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

mean = cv2.medianBlur(gray,201)cv2.imshow(‘mean’,mean)

#diff = cv2.absdiff(gray, mean)diff = gray - meancv2.imshow(‘diff’,diff)cv2.imwrite(‘diff.jpg’,diff)_,thres_low = cv2.threshold(diff,150,255,cv2.THRESH_BINARY)#二值化_,thres_high = cv2.threshold(diff,220,255,cv2.THRESH_BINARY)#二值化thres = thres_low - thres_highcv2.imshow(‘thres’,thres)

k1 = np.zeros((18,18,1), np.uint8)cv2.circle(k1,(8,8),9,(1,1,1),-1, cv2.LINE_AA)k2 = np.zeros((20,20,1), np.uint8)cv2.circle(k2,(10,10),10,(1,1,1),-1, cv2.LINE_AA)opening = cv2.morphologyEx(thres, cv2.MORPH_OPEN, k1)cv2.imshow(‘opening’,opening)closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, k2)cv2.imshow(‘closing’,closing)

contours,hierarchy = cv2.findContours(closing, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for cnt in contours: (x, y, w, h) = cv2.boundingRect(cnt) if w 》 5 and h 》 5: #cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) cv2.drawContours(img,contours,-1,(0,0,255),2)

cv2.drawContours(img,cnt,2,(0,0,255),2)cv2.imshow(‘result’,img)

cv2.waitKey(0)cv2.destroyAllWindows()print(‘Done!’)

逐步效果演示

滤波效果:mean

做差效果:diff

阈值效果:thres

开运算效果:opening

闭运算效果:closing

轮廓查找绘制最终结果:

结尾语

[1] 算法只是针对这一张图片,实际应用为验证算法鲁棒性还需大量图片做测试方可; [2] 缺陷检测如果用传统方法不易实现,可以考虑使用深度学习分割网络如:mask-rcnn、U-net等

—版权声明—

来源:OpenCV与AI深度学习

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波
    +关注

    关注

    10

    文章

    624

    浏览量

    56250
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40790
  • HALCON
    +关注

    关注

    16

    文章

    63

    浏览量

    27004
  • 深度学习
    +关注

    关注

    73

    文章

    5239

    浏览量

    119925

原文标题:Halcon转OpenCV实例--复杂背景下缺陷检测(附源码)

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HalconOpencv图像处理库对比

    在工业视觉领域属于经常使用的软件,相对于opencv的开源精神Halcon属于商业非开源项目并且收费。Halcon起源于德国在国内的工业视觉领域市场占用率遥遥领先。
    的头像 发表于 12-20 10:30 311次阅读

    电子元件缺陷检测方法

    电子元件是现代科技中不可或缺的一部分,但由于制造过程中的复杂性,元件可能出现各种缺陷。为了保证电子元件的质量和可靠性,缺陷检测是必不可少的过程。本文将详细介绍电子元件
    的头像 发表于 12-18 14:46 486次阅读

    基于OpenVINO+OpenCV的OCR处理流程化实现

    预处理主要是基于OpenCV、场景文字检测与识别基于OpenVINO框架 + PaddleOCR模型完成。直接按图索骥即可得到最终结果。 OpenCV预处理主要是完成偏斜矫正、背景矫正
    的头像 发表于 11-07 11:21 384次阅读
    基于OpenVINO+<b class='flag-5'>OpenCV</b>的OCR处理流程化<b class='flag-5'>实现</b>

    openCV边缘检测原理是什么?

    openCV是通过什么原理来实现边缘检测
    发表于 10-10 06:21

    【KV260视觉入门套件试用体验】三、缺陷检测

    一、简介 缺陷检测加速应用程序是一个机器视觉应用程序,它通过使用计算机视觉库功能自动检测芒果中的缺陷并在高速工厂管道中进行分类。 缺陷
    发表于 09-26 15:17

    【触觉智能 Purple Pi OH 开发板体验】三、Ubuntu镜像安装OpenCV边缘检测开发

    预设的允许度和其他条件输出结果,包括尺寸、角度、个数、合格/不合格、有/无等,实现自动识别功能。2.2、缺陷检测实现步骤缺陷
    发表于 09-09 13:20

    数据高效缺陷检测技术有哪些

    1. 摘要 CVPR VISION 23挑战赛第1赛道 "数据智能缺陷检测 "要求参赛者在数据缺乏的环境下对14个工业检测数据集进行实例分割。本论文的方法聚焦于在有限训练样本的场景下提
    的头像 发表于 07-18 15:28 415次阅读
    数据高效<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>技术有哪些

    基于Halcon图像处理的表面缺陷检测方案

    本文采用Halcon图像处理软件来搭建工业标签表面缺陷检测检测系统,主要检测过程为:利用工业相机对传送带上待检的工业标签进行图像采集和预处
    发表于 07-13 12:19 864次阅读
    基于<b class='flag-5'>Halcon</b>图像处理的表面<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>方案

    OpenCV FFT模糊检测方法

      在本教程中,您将学习如何使用OpenCV和快速傅里叶变换(FFT)在图像和实时视流中执行模糊检测。 今天的教程是我上一篇关于OpenCV模糊检测的博客文章的扩展 原始模糊
    的头像 发表于 06-26 10:47 495次阅读
    <b class='flag-5'>OpenCV</b> FFT模糊<b class='flag-5'>检测</b>方法

    利用opencv+openpose实现人体姿态检测

    利用opencv+openpose实现人体姿态检测,附详细代码。 通过一个偶然机会,我了解到了人体姿态解算,在学习K210之余,我便想着通过opencv
    的头像 发表于 06-26 10:15 2314次阅读
    利用<b class='flag-5'>opencv</b>+openpose<b class='flag-5'>实现</b>人体姿态<b class='flag-5'>检测</b>

    如何在缺陷样本少的情况下实现高精度的检测

    样本少的情况下实现高精度的检测呢?目前有两种方法,一种是小样本学习,另一种是用GAN。本文将介绍一种GAN用于无缺陷样本产品表面缺陷检测
    的头像 发表于 06-26 09:54 795次阅读
    如何在<b class='flag-5'>缺陷</b>样本少的情况下<b class='flag-5'>实现</b>高精度的<b class='flag-5'>检测</b>

    基于GAN的零缺陷样本产品表面缺陷检测

    少的情况下实现高精度的检测呢?目前有两种方法,一种是小样本学习,另一种是用GAN。本文将介绍一种GAN用于无缺陷样本产品表面缺陷检测
    的头像 发表于 06-26 09:49 639次阅读
    基于GAN的零<b class='flag-5'>缺陷</b>样本产品表面<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>

    蔡司工业CT检测铸件缺陷

    蔡司工业CT自动缺陷检测软件可以可靠、快速和自动地检测和评估铸件中即使是最小的缺陷。机器学习使之成为可能!您的优势:仅需60秒即可进行缺陷
    的头像 发表于 06-07 16:33 387次阅读
    蔡司工业CT<b class='flag-5'>检测</b>铸件<b class='flag-5'>缺陷</b>

    通过Opencv+Openpose实现体姿态检测

    通过一个偶然机会,我了解到了人体姿态解算,在学习K210之余,我便想着通过opencv实现这个功能,查找了很多资料,发现可以利用opencv+openpose实现,接着我又开始找一些资
    的头像 发表于 05-22 10:44 787次阅读
    通过<b class='flag-5'>Opencv</b>+Openpose<b class='flag-5'>实现</b>体姿态<b class='flag-5'>检测</b>

    如何在OpenCV中使用基于深度学习的边缘检测

    在这篇文章中,我们将学习如何在OpenCV中使用基于深度学习的边缘检测,它比目前流行的canny边缘检测器更精确。
    的头像 发表于 05-19 09:52 1678次阅读
    如何在<b class='flag-5'>OpenCV</b>中使用基于深度学习的边缘<b class='flag-5'>检测</b>?