(1)channels_to_image:*多张图片组合成一个通道
(2)mean_n: *对多个通道图片做灰度平均运算,生成一张图片
(3)select_obj:选择数组中的一个
(4)complement: 求补集
(5)expand_region(Regions, ForbiddenArea : RegionExpanded : Iterations, Mode : )
        区域扩张,ForbiddenArea:不允许扩张到的区域。'maximal':扩张到极限

* board.hdev: Detection of missing solder
*
get_system ('clip_region', Information)
set_system ('clip_region', 'true')
dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowID)
read_image (Images, ['ic0','ic1','ic2','ic3'])
*多张图片组合成一个通道
channels_to_image (Images, Ic)
select_obj (Images, Input1, 1)
dev_display (Input1)
set_display_font (WindowID, 14, 'mono', 'false', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input2, 2)
dev_display (Input2)
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input3, 3)
dev_display (Input3)
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input4, 4)
dev_display (Input4)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*对多个通道图片做灰度平均运算,生成一张图片
mean_n (Ic, ImageMean)
dev_display (ImageMean)
*选出所有应当有的焊点
threshold (Images, Darks, 0, 40)
union1 (Darks, Dark)
fill_up (Dark, DarkFilled)
dev_set_color ('green')
dev_display (DarkFilled)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*选出焊点以外的底板
threshold (Images, Lights, 100, 255)
union1 (Lights, Light)
*两个区域相交选出良好的焊点轮廓
intersection (DarkFilled, Light, Intersection)
dev_display (ImageMean)
dev_display (Intersection)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*用焊点的补集更准确的选出底板
complement (DarkFilled, Back)
dev_set_color ('red')
dev_display (Back)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*expand_region:扩张良好的焊点轮廓而不越过底板的区域,使清楚显示良好的焊点区域。
*因为图片除了底板就是焊点,所有如果所有焊点良好则焊点轮廓适当生长并填充后应该填满底板以外的所有区域
*但有不良的焊点包含且孤立在底板区域内时,这些孔洞将不能填满,这些就是不良焊点
*不选择'maximal',只要适当扩张轮廓再填充,以免干扰不良焊点
expand_region (Intersection, Back, RegionExpanded, 10, 'image')
fill_up (RegionExpanded, Good)
dev_display (ImageMean)
dev_set_color ('green')
dev_display (Good)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*用所有焊点减去良好焊点,求出不良焊点
difference (DarkFilled, Good, Rest)
dev_set_color ('red')
dev_display (Rest)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*expand_gray : ???
expand_gray (Rest, Ic, Good, Bad, 'maximal', 'image', 5)
dev_display (Bad)
disp_continue_message (WindowID, 'black', 'true')
stop ()
connection (Bad, ConnectedBad)
select_shape (ConnectedBad, BigBad, 'area', 'and', 150, 99999)
area_center (BigBad, AreaBad, Row, Column)
count_obj (BigBad, NumMissingSolder)
AreaMissingSolder := sum(AreaBad)
dev_display (Images)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Good)
dev_set_color ('red')
dev_display (BigBad)
dev_set_draw ('fill')
dev_set_line_width (1)
dev_update_window ('on')
set_system ('clip_region', Information)

Halcon焊点检测相关推荐

  1. Halcon焊点检测例子解析

    Halcon焊点检测例子解析 什么是焊点检测 检测的目的 检测的思路 总结 Halcon焊点检测源码 什么是焊点检测 如图:以上为Halcon焊点检测例子所用图片[例程->方法->Blob ...

  2. halcon 焊点检测案例

    *循环读入图片 list_files('F:/halcon_test/circularity_die', 'files', Files) tuple_regexp_select (Files, '.p ...

  3. Halcon实例转OpenCV之焊点检测

    Halcon例程中有一个焊点检测例程ball.hdev,大家可以在例程中搜索查看,如下是实例使用的测试图和运行结果图: 测试图像: 运行结果图: 实现的大致步骤: ① 二值化后获取Board区域,设置 ...

  4. HALCON之焊点检测(二):基于形态学的基础焊点检测方法

    我们来看一下焊点检测的基础算法,这种方法基于halcon的形态学算法. 其基本流程为: 阈值分割->填充region->选择region 下面是实验图片 下面为halcon程序: read ...

  5. HALCON之焊点检测(一):焊点检测工艺要求

    一.焊点检测需求的由来 在锂电池生产线上,电芯被分为软包与硬包两种.其中软包的电芯最常见.大家使用的数码设备如大部分品牌的手机.平板.手环等产品许多都是软包电芯,如下图: 这种电芯的特点是其包装是材质 ...

  6. Halcon缺陷检测系列

    Halcon缺陷检测系列Halcon缺陷检测系列Halcon缺陷检测系列 一 注塑吸嘴缺口检测 二 铣刀刀口破损缺陷检测 三 网状产品表面破损检测 四 手机摄像头图像表面的轻微缺陷检测 五 皮革纹理表 ...

  7. Halcon表面缺陷检测

    Halcon表面缺陷检测 本文章转载自 link 1* Optimize the fft speed for the specific image size 优化特定图像大小的FFT速度 optimi ...

  8. Halcon 缺陷检测 金属拉丝表面缺陷检测(乘法增强、傅里叶变换与卷积、纹理过滤、动态阈值)

    Halcon 缺陷检测 拉丝表面缺陷检测(乘法增强.傅里叶变换与卷积.纹理过滤.动态阈值) 文件下载 链接:https://pan.baidu.com/s/1HNl4vy0jEaFx5OUuBDAMX ...

  9. 视觉成长之路Halcon——颜色检测:GMM分类器

    视觉成长之路Halcon--颜色检测:GMM分类器 前言 一.算子介绍 二.程序 总结 前言 通过系统案例学习GMM分类器在颜色识别中的应用 一.算子介绍 1.gen_rectangle1通过两个坐标 ...

最新文章

  1. java拦截到登陆界面,JavaWeb 使用Filter实现自动登录
  2. HR 的那些黑话大全,太扎心了!(漫画)
  3. CPU 和 GPU频率设置
  4. MyBatis框架笔记03:MyBatis实现CRUD
  5. vue项目启动出现cannot GET /服务错误
  6. 最简单的DX窗口程序
  7. 天文坐标系的转换 时角坐标和赤道坐标系的转化
  8. c语言口袋妖怪代码大全,口袋妖怪代码大全.docx
  9. JAFFE表情库介绍
  10. python 视频转图片
  11. 解决object at 0x01DB75F0
  12. 每一个赞扬背后都有一两个“慕名而来”,而每一个抱怨背后都有100个“弃你而去”。
  13. 计算机网络 FDM TDM
  14. 深度学习基础笔记——前向传播与反向传播
  15. 【信号处理】数字信号处理Matlab设计附GUI界面和报告
  16. 华为od一面面试算法
  17. 2个实用的解决R语言中文乱码方法
  18. 某校2016专硕算法设计
  19. 如何下载谷歌/百度/高德大字体地图用于打印
  20. photoshop出现“不能打开暂存盘文件,因为该文件已锁定”解决办法

热门文章

  1. 在qemu中添加swap分区
  2. java利用jaudiotagger随机将MP3分割成小段
  3. pythonrequest爬取小说_python爬取斗破苍穹小说
  4. aws安装(centos)
  5. DAY4-仿真 Rviz URDF集成Rviz基本流程和URDF语法
  6. Acrobat中的颜色转换和油墨管理功能以及专色转换
  7. spring整合quartz框架定时任务实战
  8. 造轮子-strace(二)实现
  9. 小学计算机第二课堂内容,小学科学第二课堂活动记录
  10. Python中应用决策树算法预测客户等级