*surface_scratch.hdev:extraction of surface scratches via local thresholding and morphological post-processing*

dev_close_window()

dev_update_window(‘off’)

*****

*step: acquire image //获取图片

*****

read_image(Image,’surface_scratch’) //读入图片名为’surface_scratch’的图片

get_image_size(Image,Width,Height) //获取图像的尺寸:宽、高

//在坐标为(0,0)处打开一个图像窗口。其宽和高分别是Width和Width,窗口的句柄为WindowID

dev_open_window_fit_image(Image,0,0,Width,Width,WindowID)

//设置窗口中显示的字体颜色,大小,加粗,倾斜

set_display_font(WindowID,12,’Courier’,’true’,’false’)

dev_set_draw(‘margin’) //设置区域填充类型:’margin’ or ‘fill’

dev_set_line_width(4) //设置线宽,这个在填充类型为fill时效果不明显

dev_display(Image) //显示图片

disp_continue_message(WindowID,’black’,’true’) //显示继续消息,等待用户按F5继续执行

stop()

*****

*step: segment image

*****

*-> using a local threshold

mean_image(Image,ImageMean,7,7) //用7×7的窗口对图像进行均值滤波

dyn_threshold(Image,ImageMean,DarkPixels,5,’dark’) //利用本地阈值进行图像分割

*->extract connected components

connection(DarkPixels,ConnectedRegions) //对区域进行连通运算

dev_set_colored(12) //设置区域显示的颜色数目

dev_display(ConnectedRegions) //显示图像

disp_continue_message(WindowID,’black’,’true’)//显示继续提示,提示继续

stop()

*****

*step: process regions

*****

*->select large regions

select_shape(ConnectedRegions,SelsectedRegions,’area’,’and’,10,1000) //区域选择,用面积的形态特征选择面积在10到10000间的区域

dev_display(Image) //显示原图

dev_display(SelectedRegions) //显示选择的区域

disp_continue_message(WindowID,’black’,’true’) //显示继续提示,提示继续

stop()

*->visualize fractioned scratch

open_zoom_window(0,round(Width/2),2,303,137,496,3,WindowHandleZoom)

dev_set_color(‘blue’) //设置显示颜色(蓝色),功能与dev_set_colored类似

dev_display(Image) //显示原图

dev_display(SelectedRegions) //显示选中的区域图

disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息

stop()

*->merge fractioned scratches via morphology

union1(SelectedRegions,RegionUnion) //合并所有区域

dilation_circle(RegionUnion,RegionDilation,3.5) //用半径3.5 的掩膜进行膨胀

dev_display(Image) //显示原图

dev_display(RegionDilation) //显示膨胀后的区域图

disp_continue_message(WindowID,’black’,’true’)//显示继续提示信息

stop()

skeleton(RegionDialtion,Skeleton) //计算区域的中轴,见例程:surface_scratch.hdev

connection(Skeleton,Errors) //连通操作,以便后面进行区域选择

dev_set_colored(12) //设置颜色

dev_display(Image) //显示原图

dev_display(Errors) //显示所有抓痕

disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息

stop()

*->distinguish small and large scratches

close_zoom_window(WindowHandleZoom,Width,Height) //关闭缩放窗口

select_shape(Errors,Scratches,’area’,’and’,50,10000)//选择区域面积在50到10000的作为划痕

select_shape(Errors,Dots,’area’,’and’,1,50) //选择区域面积在1到50 的作为点

dev_display(Image) //显示原图

dev_set_color(‘red’) //设置区域显示颜色为红色

dev_display(Scratches) //显示条状划痕(显示为红色)

dev_set_color(‘blue’) //设置区域显示颜色蓝色

dev_display(Dots) //显示点状划痕(显示为蓝色)

halcon python缺陷检测_Halcon学习笔记之缺陷检测(一)相关推荐

  1. HALCON 20.11:深度学习笔记(11)---目标检测

    HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...

  2. HALCON 20.11:深度学习笔记(9)---异常检测

    HALCON 20.11:深度学习笔记(9)---异常检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何使用基于深度学习的异常检测. 通过异常检测,我们想要检测图像是否包含 ...

  3. halcon相机标定助手_Halcon 学习笔记---单相机标定(2)

    一.单项机标定原因 降低畸变(相差) 测量 二.相机标定求出什么 该方程是求取世界坐标系与像素坐标系之间转换矩阵,本质就是求出相机的内外参数.其中dx和dy为每个像素在图像坐标系(UVO)沿U和V方向 ...

  4. HALCON 21.11:深度学习笔记---对象检测, 实例分割(11)

    HALCON 21.11:深度学习笔记---对象检测, 实例分割(11) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在 ...

  5. HALCON 21.11:深度学习笔记---异常检测(9)

    HALCON 21.11:深度学习笔记---异常检测(9) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的异常检测. 通过异常检测,我们想要检测图像是否包含 ...

  6. HALCON 21.11:深度学习笔记---语义分割/边缘提取(12)

    HALCON 21.11:深度学习笔记---语义分割/边缘提取(12) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的语义分割,包括训练和推理阶段. 通过语 ...

  7. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  8. HALCON 21.11:深度学习笔记---模型(8)

    HALCON 21.11:深度学习笔记---模型(8) HALCON 21.11.0.0中,实现了深度学习方法. 本章阐述了HALCON中深度学习(DL)模型的一般概念和数据处理. 从概念上讲,HAL ...

  9. HALCON 21.11:深度学习笔记---有监督训练(6)

    HALCON 21.11:深度学习笔记---有监督训练(6) HALCON 21.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的衡量标准来确定网络的" ...

最新文章

  1. C++继承机制下的析构函数
  2. python科学计算笔记(十一)pandas中date_range生成指定日期
  3. 手机常用分页加载loading框
  4. 现代软件工程系列 学生读后感 梦断代码 软件难做
  5. centsos7修改主机名 [root@st152 ~]# cat /etc/hostname
  6. bash:express:command not found
  7. MFC DLL 导出函数的定义方式
  8. cd40系列芯片_IC集成电路型号大全及40系列芯片功能大全
  9. 《湮灭》脑洞:行星级癌变与人的自我救赎
  10. 《MLB棒球创造营》:走近棒球运动·纽约扬基队
  11. Yardi客户入选全球房地产十强报告
  12. idea复制代码空格报错
  13. 腾讯低代码平台正式开源:可拖拽生成手机、PC等项目-接私活福利啊
  14. DSPE-PEG1-COOH可与伯胺基反应的反应性磷脂PEG共轭物之一
  15. 联通光猫TEWA-800E设置桥接模式
  16. Deepin20固定无线网卡多个IP地址
  17. 损失函数focal loss深度理解与简单实现
  18. QQ空间过滤器,千军万马(97779)网盘资源下载地址提取器,Discuz 论坛隐藏内容自动回复 成功上架到 chrome 商店...
  19. 永磁同步电机(PMSM)最小损耗控制Simulink仿真
  20. 全国计算机应用基础统考成绩查询,网络教育统考成绩查询的方法有哪些

热门文章

  1. Hibernate锁定模式– OPTIMISTIC_FORCE_INCREMENT锁定模式如何工作
  2. 主要矛盾和次要矛盾_次要GC,主要GC与完整GC
  3. sts集成jboss_如何为JBoss Developer Studio 8设置集成和SOA工具
  4. camel 调用soap_使用Apache Camel通过soap添加WS-Security
  5. 可重复使用的MicroProfile Health探针
  6. scala 异步调用_非阻塞异步Java 8和Scala的Try / Success / Failure
  7. 配置Jenkins以连续交付Spring Boot应用程序
  8. 数据聚合Spring Data MongoDB:嵌套结果
  9. java 枚举内嵌枚举_Java枚举益智游戏
  10. js 闭包作用域和作用域链_Java:伪造工厂的闭包以创建域对象