get_mbutton (WindowID, Row, Column, Button)
select_region_point (SmallSingle, OneObject, Row, Column)
首先,窗口通过devclearwindow被清除,接着connection计算所有相连的部件来允许选择单个区域。在HDevelop窗口也显示了区域部件。在这里你可以使用红色来标记所选择的区域,通过给变量button赋值1,查询鼠标的状态,选择被选区域来初始化循环。作为示例平均灰度和标准分割都已被计算好了。你只需按下鼠标左键启动循环,按下任何鼠标键可以停止操作。
4 年轮
文件名:wood.dev
所有人都知道通过计算树木的年轮来计算它们的年龄。这个示例程序也是这样做的。第一步是分割年轮,这很容易,因为你可以清楚地分清明暗线。接着使用动态门限(dynthreshold),你使用带有15x15的平均滤波来达到一个合适门限图像。这个分割图像含有非常小的区域没有年轮。为了去掉它们你使用connection来创建连接部件,selectshape压缩所有太小的区域。计算年轮变得很困难,因为在图像中表现为柱状(图5.8)。
图5.8 树的年轮
这样我们建议使用如下方法:你使用鼠标来确定线的开始点和结束点。这样年轮的交叉点可以计算出来。这可以通过如下HALCON操作:开始与结束点可以被它们的x-和y-坐标来标记,使用genregionline来转化为线段,使用intersection来分割年轮。连接的区域就是年轮。完整的程序如下:
dev_close_window ()
read_image (WoodPiece1, ’woodring’)
get_image_pointer1 (WoodPiece1, Pointer, Type, Width, Height)