read_image (Image, 'fabrik') dev_close_window () dev_open_window (0, 0, 512, 512, 'black', WindowID) set_display_font (WindowID, 14,'mono', 'true', 'false') dev_set_colored (6)
*设置显示颜色的种类个数* regiongrowing (Image, Regions, 1, 1, 3, 200)
*将图像分区域,区域最小尺寸为200,通过比较灰度值,公差在3以内,“1,1”参数表示横向和纵向检测的像素个数。请注意和面实验对比效果* dev_set_draw ('margin') dev_display (Regions) area_center (Regions, Area, Row, Column) get_string_extents (WindowID, 12345, Ascent, Descent, TxtWidth, TxtHeight)
*计算字符串“12345”的宽度,预留出区域面积字符串的显示位置* for I := 0 to |Area| - 1 by 1 disp_message (WindowID, Area[I], 'image', Row[I] - TxtHeight / 2, Column[I] - TxtWidth / 2, 'white', 'false') endfor
原图
regiongrowing (Image, Regions, 1, 1, 3, 200)
regiongrowing (Image, Regions, 1, 3, 3, 200)
regiongrowing (Image, Regions, 3, 1, 3, 200)
注意原图中电脑栅格哪里因为相邻区域图形面积达不到200而被显示为黑色,所以黑色是不配选择区域。而不是一种区域显示颜色
该示例注意 regiongrowing 和 area_center 算子的功能
请注意,HALCON中的变量不用预先定义,所以如果计算出来的区域为多个区域,则area_center(regions,area,row,column)中计算出来的结果如果为多个值得话,则相应的变量就都是数组。