HALCON示例程序inspect_solar_fingers.hdev太阳能电池板电路缺陷检测

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_update_off ()
    dev_close_window ()
    ImageName := ‘solar_cell/solar_cell_’
    read_image (Image, ImageName + ‘01’)
    dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
    set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
    dev_set_color (‘red’)
    dev_set_draw (‘margin’)
    dev_set_line_width (2)
    NumImages := 6
    for Index := 1 to NumImages by 1
    read_image (Image, ImageName + Index$‘02’)

    • 彩色图像分成RGB三个通道
      decompose3 (Image, ImageR, ImageG, ImageB)
    • 二值化
      threshold (ImageR, Region, 0, 159)
      *分割连通域
      connection (Region, ConnectedRegions)
    • 使用宽度、高度、面积对区域进行筛选
      select_shape (ConnectedRegions, GoodSmallParts, [‘area’,‘width’], ‘and’, [3500,130], [5000,300])
      select_shape (ConnectedRegions, GoodLongParts, [‘area’,‘width’], ‘and’, [6000,350], [10000,550])
      select_shape (ConnectedRegions, Clutter, [‘width’,‘height’,‘area’], ‘or’, [900,900,0], [1000,1000,100])
    • 求取筛选出的与合格的不同的区域
      difference (ConnectedRegions, GoodSmallParts, Difference)
      difference (Difference, GoodLongParts, Difference)
      difference (Difference, Clutter, BrokenParts)
    • 对不合格区域进行形状变换,变换为矩形
      shape_trans (BrokenParts, BrokenPartsTrans, ‘rectangle1’)
    • 合格的部分高度大概在19,用高为25的矩形进行腐蚀,那么断开区域就能被筛选出来了
      erosion_rectangle1 (BrokenParts, RegionErosion, 1, 25)
      connection (RegionErosion, ConnectedBreaks)
    • 求区域的最小外接圆
      shape_trans (ConnectedBreaks, Breaks, ‘outer_circle’)
    • 膨胀一下
      dilation_circle (Breaks, Breaks, 6)
    • 删除空区域
      select_shape (Breaks, Breaks, ‘area’, ‘and’, 1, 99999999)
      count_obj (Breaks, CountBreaks)
      dev_display (Image)
      dev_display (BrokenPartsTrans)
      dev_display (Breaks)

    if (CountBreaks == 0)
    disp_message (WindowHandle, ‘Cell OK’, ‘window’, 12, 12, ‘black’, ‘true’)
    else
    disp_message (WindowHandle, ‘Cell not OK’, ‘window’, 12, 12, ‘red’, ‘true’)
    endif
    *
    if (Index != NumImages)
    disp_continue_message (WindowHandle, ‘black’, ‘true’)
    stop ()
    endif

    • 如果只有一处缺陷,放大显示
      if (CountBreaks == 1)
      dev_open_window (0, 610, 300, 300, ‘black’, WindowHandle1)
      area_center (Breaks, Area, Row, Column)
      dev_set_part (Row[0] - 50, Column[0] - 50, Row[0] + 50, Column[0] + 50)
      dev_display (Image)
      dev_display (BrokenPartsTrans)
      dev_display (Breaks)
      stop ()
      dev_set_window (WindowHandle1)
      dev_close_window ()
      endif
      endfor

处理思路

这个例子是主要讲解了太阳能电池板的电路完整性检测。灵活的应用了select_shape 与difference ;shape_trans完成了缺陷区域的框选;erosion_rectangle1 腐蚀缺陷区域以提取断点。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

HALCON示例程序inspect_solar_fingers.hdev太阳能电池板电路缺陷检测相关推荐

  1. HALCON示例程序inspect_bga.hdev测量bga焊点缺陷

    HALCON示例程序inspect_bga.hdev测量bga焊点缺陷 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, 'bga_14x14_model') get_ ...

  2. HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测

    HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测 示例程序源码(加注释) 获取系统关于"空白区域储存的设置" get_system ('stor ...

  3. HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量

    HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window ( ...

  4. HALCON示例程序board.hdev检测电路板焊锡有无程序剖析

    HALCON示例程序board.hdev检测电路板焊锡有无程序剖析 示例程序源码(加注释) *这是关于系统设置的函数,剪辑区域,设置剪辑区域设置为使能.为clip_region做的设置,后文会介绍 g ...

  5. HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体

    HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体 小哥哥小姐姐觉得有用点个赞呗! 示例程序源码(加注释) 蓝色字体均为算子解释链接,可以前往查看解答 关于 ...

  6. HALCON示例程序vessel.hdev血管的分割与测量

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序vessel.hdev血管的分割与测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_window ('off') dev_cl ...

  7. HALCON示例程序texture.hdev检测树木

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序texture.hdev检测树木 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () Interactive := ...

  8. HALCON示例程序surface_scratch.hdev提取划痕

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序surface_scratch.hdev提取划痕 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close ...

  9. HALCON示例程序stamp_catalogue.hdev分割图片与文字

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序stamp_catalogue.hdev分割图片与文字 示例程序源码(加注释) 关于显示类函数解释 gen_rectangle1 (Rect, 0, ...

最新文章

  1. 【Linux】【服务器】 CentOS7下卸载MySQL详细过程步骤
  2. 获取XML的文件信息
  3. Android之自定义控件入门
  4. mysql infile local,MySQL:启用LOAD DATA LOCAL INFILE
  5. 双路服务器单路运行,架构设计-具体案例求解惑:两个单路服务器比一个双路服务器性能高100%?...
  6. 黑马程序员:java基础学习——数组
  7. html如何将设置文本效果,Word2013中通过设置文本效果格式来为文字添加特殊效果...
  8. Foxit Quick PDF Library License Key
  9. 获取实际ip地址(与在百度输入IP搜索得到的ip地址相同,即真实IP地址
  10. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
  11. 跟踪(一):跟踪常见算法和特点
  12. linux usb网卡驱动 ko,qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置
  13. css 属性 calc 的使用
  14. jquery获取元素四种方式。
  15. 视频webm怎么转换成mp4
  16. 创新思维对计算机专业的关系,创新思维复习题
  17. ssti练习之[CSCCTF 2019 Qual]FlaskLight 1
  18. Bonobo基于.NET-Git服务器
  19. Codeforces Round #776 (Div. 3)-D. Twist the Permutation
  20. 基于Python的换脸应用

热门文章

  1. Oracle配置监听要注意的地方
  2. Java爬取并下载酷狗音乐
  3. 软件工程--第十三周学习进度
  4. 根据HTML5 获取当前位置的经纬度【百度地图】【高德地图】
  5. ASP站点无法访问怎么办
  6. 夺命雷公狗---微信开发39----微信语言识别接口1
  7. redis watch multi exec 关系
  8. uva10617 - Again Palindrome(dp)
  9. 二叉树特性及详细例子
  10. 阮一峰:jQuery官方基础教程笔记