*读取图像
read_image (Bond, 'die/die_03')
*获取图像大小
get_image_size (Bond, Width, Height)
*关闭窗口
dev_clear_window()
*打开窗口: row 行 column 列 宽 高、颜色背景、程序句柄号
dev_open_window(0, 0, Width, Height, 'black', WindowID)
*显示图像
dev_display(Bond)
*限制灰度值范围:100-最小灰度值 255-最大灰度值
threshold (Bond, Bright, 100, 255)
*改变 区域,包裹
shape_trans (Bright, Die, 'rectangle2')
*参数选择
*convex hull凸包围(由外向内包围)
*outer_circle 外圆(能够包括对象的半径最小的圆形)
*inner_circle 内圆
*rectangle1 正矩形
*rectangle2 最小包围矩形
*inner_rectangle1 最大内矩形
*绘制矩形框:设置颜色、线条大小、空白背景、根据哪个图像、
dev_set_color ('green')
dev_set_line_width (3)
dev_set_draw ('margin')
dev_display (Die)
*锁定区域:输入图像、需要锁定的区域、输出图像
reduce_domain (Bond, Die, DieGrey)
*限制灰度值范围:0-最小灰度值 50-最大灰度值
threshold (DieGrey, Wires, 0, 50)
*填充区域:输入图像、输出图像、面积方式、范围1~100
fill_up_shape (Wires, WiresFilled, 'area', 1, 100)
*area面积范围方式筛选
*compactness 紧密度
*convexity 凸状物
*anisometry 等距
*phi、ra、rb、
*inner_circle 内切圆
*outer_circle 外切圆
*去掉半径小于15.5的圆形区域后,将剩下的的区域保存到Balls中
opening_circle (WiresFilled, Balls, 15.5)
*连接:连通域搜索,寻找闭合图像
connection (Balls, SingleBalls)
*选择形状:输入、输出、选择某一种方式(当前为圆形的圆度)、and 或 or、圆的程度范围:0.85~1、
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)
*根据区域的相对位置对区域进行排序
*输入、输出、排序模式、递增或递减、row 行 或 列column
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')
* 'character' 轮廓顶点排序,由上至下
* 'first_point' 同一水平线算一行,由上至下,从左到右,
*最小的外接圆:输入、输出行、输出列、外接圆半径、
smallest_circle (FinalBalls, Row, Column, Radius)
* 计算长度
NumBalls := |Radius|
* 列表中的每个半径长度都乘以2, 计算直径
Diameter := 2 * Radius
*求列表中平均直径
meanDiameter := mean(Diameter)
*计算列表中的最小直径
minDiameter := min(Diameter)
*显示图像
dev_display (Bond)
*显示 圆:句柄号、行(y轴)、列(x轴)、半径
disp_circle (WindowID, Row, Column, Radius)
*设置字体:程序句柄号、字号大小、字体、是否加粗、是否倾斜、
set_display_font (WindowID, 14, 'mono', 'true', 'false')
*显示文本框:句柄、字符串、在什么窗口或图像上、行、列、颜色、是否使用背景框
disp_message (WindowID, 'D: ' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false')
halcon示例程序(Blob分析--ball.hdev)检测钢珠粘合
于 2023-03-22 15:23:49 首次发布