HALCON示例程序particle.hdev测量小圆部分

HALCON示例程序particle.hdev测量小圆部分

示例程序源码(加注释)

  • 关于显示类函数解释
    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’)
    dev_display (Image)
    disp_message (WindowID, ‘Original image’, ‘window’, 12, 12, ‘black’, ‘true’)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 二值化
    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’)
    disp_message (WindowID, ‘Exclude large areas from processing’, ‘window’, 12, 12, ‘black’, ‘true’)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 求取区域补集
    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)
    disp_message (WindowID, ‘Extracted small particles’, ‘window’, 12, 12, ‘black’, ‘true’)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
    dev_set_color (‘green’)
    dev_display (Image)
    dev_set_draw (‘margin’)
    dev_display (SmallConnection)
    Button := 1
  • 以下代码块完成了鼠标点击到某区域得到区域的面积
while (Button == 1)
    disp_message (WindowID, ['Select object with left mouse button','Right button to quit'], 'image', 5, 5, 'black', 'true')
    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)
        disp_message (WindowID, ['Area = ' + Area,'Intensity = ' + MeanGray$'.3'], 'image', Row + 10, Column - 90, 'black', 'true')
    endif
endwhile

dev_set_line_width (1)
dev_update_on ()

处理思路

这个例子是主要讲解了通过鼠标实时显示区域特征的例子。

后记

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值