halcon 缺陷检测 灰尘检查

请添加图片描述

图片资源

链接:https://pan.baidu.com/s/1eUv3xUCpYM99_x1PnmhtGA
提取码:0kwh

处理流程

1、检测并显示大灰尘(二值化、膨胀)
2、检测并显示小灰尘(均值滤波、动态阈值二值化)
3、鼠标左键选择灰尘,计算小灰尘平均灰度与面积

完整代码

* 检查图片中 大小灰尘

**** 1、加载图片并显示 ****************************
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowID)
set_display_font (WindowID, 14, 'mono', 'true', 'false')
read_image (Image, './particle.png')
dev_display (Image)
dev_disp_text ('Original image', 'window', 12, 12, 'black', [], [])
dev_disp_text ('Press Run (F5) to continue', 'window', 'bottom', 'right', 'black', [], [])
stop ()

**** 2、检测并显示大灰尘 ****************************
* 二值化
threshold (Image, Large, 110, 255)
* 膨胀算法(圆形)
dilation_circle (Large, LargeDilation, 7.5)
* 显示大灰尘区域
dev_display (Image)
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('red')
dev_display (LargeDilation)
dev_set_draw ('fill')
dev_disp_text ('大灰尘区域', 'window', 12, 12, 'black', [], [])
dev_disp_text ('Press Run (F5) to continue', 'window', 'bottom', 'right', 'black', [], [])
stop ()

**** 3、检测并显示小灰尘 ****************************
* 大灰尘补集区域
complement (LargeDilation, NotLarge)
* 图片中去除大灰尘区域
reduce_domain (Image, NotLarge, ParticlesRed)
* 图片均值化
mean_image (ParticlesRed, Mean, 31, 31)
* 动态区域二值化
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')
* 开运算过滤 灰尘
opening_circle (SmallRaw, Small, 2.5)
* 连通域分析
connection (Small, SmallConnection)
dev_display (Image)
dev_set_colored (12)
dev_display (SmallConnection)
dev_disp_text ('小灰尘区域', 'window', 12, 12, 'black', [], [])
dev_disp_text ('Press Run (F5) to continue', 'window', 'bottom', 'right', 'black', [], [])
stop ()

**** 4、通过左键选择 小灰尘 显示单个灰尘面积与平均灰度****************************
dev_set_color ('green')
dev_display (Image)
dev_set_draw ('margin')
dev_display (SmallConnection)
Button := 1
* 鼠标左键点击范围
MaxRow := 450
MaxColumn := 440
MinRow := 40
MinColumn := 100

* 循环选择
while (Button == 1)
    dev_disp_text (['左键选择灰尘','右键退出循环'], 'window', 12, 12, 'black', 'box_color', '#fce9d4dd')
    dev_set_color ('green')
    * 等待用户选择灰尘坐标
    get_mbutton (WindowID, Row, Column, Button)
    * 重新显示图片
    dev_display (Image)
    dev_display (SmallConnection)
    * 以红色显示选择区域
    dev_set_color ('red')
    * 根据坐标从 小灰尘列表中 选择单个区域
    select_region_point (SmallConnection, SmallSingle, Row, Column)
    * 显示单个小灰尘(红色)
    dev_display (SmallSingle)
    
    count_obj (SmallSingle, NumSingle)
    if (NumSingle == 1)
        * 小灰尘平均灰度
        intensity (SmallSingle, Image, MeanGray, DeviationGray)
        * 小灰尘区域 面积与坐标
        area_center (SmallSingle, Area, Row, Column)
        * 限制坐标范围
        if (Row > MaxRow)
            Row := MaxRow
        endif
        if (Column > MaxColumn)
            Column := MaxColumn
        endif
        if (Row < MinRow)
            Row := MinRow
        endif
        if (Column < MinColumn)
            Column := MinColumn
        endif
        * 显示面积与平均灰度
        dev_disp_text (['Area = ' + Area,'Intensity = ' + MeanGray$'.3'], 'image', Row + 10, Column - 90, 'black', 'box_color', '#fce9d4dd')
    endif
endwhile

dev_set_line_width (1)
dev_update_on ()

在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值