机器视觉halcon学习——杂质检测

目标: 只用一套算子,找出多张图片中不同位置不同大小的杂质。
原图:
请添加图片描述
请添加图片描述
在这里插入图片描述

效果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析:
1.观察每张图片杂质的特征,比如位置,大小的不同,跟周围区域颜色的对比等等。
2.根据位置特征,发现位置都是在大白圆里面,可以先缩小区域,避免外面黑色区域的干扰。
3.根据大小,可以用select_shape里面的面积来筛选。
4.根据颜色,灰度值区域可以进行分割。

代码实现:

*窗口更新准备
dev_update_off()
dev_update_on()
dev_close_window()
dev_open_window(0, 0, 800, 800, 'black', WindowHandle)

*循环图片,目录是放图片的文件夹
list_files('D:裂片异物检测-检测出异常杂质',['files','follow_links'],ImageFiles)
tuple_regexp_select(ImageFiles,'.*', ImageFiles)
for imgIndex:=0 to |ImageFiles| -1 by 1
    read_image(Image,ImageFiles[imgIndex])    
    
*设置颜色
dev_set_color('red')
*用线条的形式显示区域
dev_set_draw('margin')
*裁剪出内部大圆
threshold(Image, Region1, 128, 255)
fill_up(Region1, RegionFillUp)
reduce_domain(Image, RegionFillUp, ImageReduced)

*根据面积筛选区域
threshold(ImageReduced, Region2, 30,120)
opening_circle(Region2, RegionOpening1, 0.5)
connection(RegionOpening1, ConnectedRegions1)
select_shape(ConnectedRegions1, SelectedRegions, 'area', 'and', 22, 1269)
fill_up(SelectedRegions, RegionFillUp1)
dev_set_color('green')
dev_set_draw('fill')
dev_display(RegionFillUp1)
dev_set_line_width(1)
set_display_font(WindowHandle, 16, 'mono', 'true', 'false')
*提示信息
disp_message(WindowHandle, '绿色部分是杂质', 'window', 12, 12, 'black', 'true')
stop()
endfor

有疑问可以留言一起讨论噢,我也是学习阶段,有更好的方法也欢迎提出来呀~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值