Halcon案例学习--ball.hdev

// halcon  检查球形案例。
dev_update_window ('off')      //更新窗口为off状态
dev_close_window ()//关闭图像窗口
dev_open_window (0, 0, 728, 512, 'black', WindowID) //产生一定大小的窗口,并且返回一个窗口指针
read_image (Bond, 'die/die_03')      //读取图片
dev_display (Bond)        //显示图片
set_display_font (WindowID, 14, 'mono', 'true', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
threshold (Bond, Bright, 100, 255) //图像二值化
shape_trans (Bright, Die, 'rectangle2')//变换区域的形状。 最小的包围矩形。选出区域
dev_set_color ('green')//区域设为绿色
dev_set_line_width (3)
dev_set_draw ('margin')
dev_display (Die)
disp_continue_message (WindowID, 'black', 'true') 
stop ()
reduce_domain (Bond, Die, DieGrey)  //减少图像的域名
threshold (DieGrey, Wires, 0, 50)
fill_up_shape (Wires, WiresFilled, 'area', 1, 100)//在具有给定形状特征的区域填充孔。
dev_display (Bond)
dev_set_draw ('fill')
dev_set_color ('red')
dev_display (WiresFilled)
disp_continue_message (WindowID, 'black', 'true')
stop ()
opening_circle (WiresFilled, Balls, 15.5) //打开一个带有圆形结构元素的区域。
dev_set_color ('green')
dev_display (Balls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
connection (Balls, SingleBalls) //计算区域的连接组件。
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)//借助形状特征选择区域。
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')//根据相对位置对区域进行排序。
dev_display (Bond)
dev_set_colored (12)
dev_display (FinalBalls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
smallest_circle (FinalBalls, Row, Column, Radius)
NumBalls := |Radius|           //检测到的球的数量
Diameter := 2 * Radius         //直径
meanDiameter := sum(Diameter) / NumBalls   //平均直径
mimDiameter := min(Diameter)         //最小直径
dev_display (Bond)               
disp_circle (WindowID, Row, Column, Radius)
dev_set_color ('white')
for i := 1 to NumBalls by 1
    if (fmod(i,2) == 1)
        disp_message (WindowID, 'D: ' + Diameter[i - 1], 'image', Row[i - 1] - 2.7 * Radius[i - 1], max([Column[i - 1] - 60,0]), 'white', 'false')
    else
        disp_message (WindowID, 'D: ' + Diameter[i - 1], 'image', Row[i - 1] + 1.2 * Radius[i - 1], max([Column[i - 1] - 60,0]), 'white', 'false')
    endif
endfor
* dump_window (WindowID, 'tiff_rgb', './ball')
dev_set_color ('green')
dev_update_window ('on')
disp_continue_message (WindowID, 'black', 'true')
stop ()
dev_close_window ()

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南山二毛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值