HALCON示例程序inner_rectangle1.hdev木板有效区域提取

HALCON示例程序inner_rectangle1.hdev木板有效区域提取

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_update_window (‘off’)
    dev_update_var (‘off’)
    dev_update_pc (‘off’)
    read_image (Image, ‘wood_knots’)
    get_image_size (Image, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width, Height, ‘black’, WindowHandle)
  • 定义区域筛选变量并且初始化
    MinAreaSize := 10000
    MinWidth := 50
    MinHeight := 50
    dev_display (Image)
  • 动态阈值分割图像.
    mean_image (Image, ThresholdImage, 31, 31)
    dyn_threshold (Image, ThresholdImage, RegionDynThresh, 20, ‘dark’)
  • 使用圆形元素对区域进行腐蚀
    erosion_circle (RegionDynThresh, RegionErosion, 1.5)
  • 分割连通域
    connection (RegionErosion, ConnectedRegions)
  • 使用面积筛选区域
    select_shape (ConnectedRegions, KnobRegions, ‘area’, ‘and’, 20, 200)
  • 使用圆形元素对区域进行膨胀
    dilation_circle (KnobRegions, KnobRegionsDilated, 5.5)
  • 合并区域
    union1 (KnobRegionsDilated, KnobRegionsUnion)
  • get_domain - 获取图像的域。
    get_domain (Image, Domain)
  • 求取两区域不相交的区域
    difference (Domain, KnobRegionsUnion, KnobFreeRegion)
  • 求取区域面积
    area_center (KnobFreeRegion, Area, Row, Column)
  • 生成一个空对象
    gen_empty_obj (KnobFreeRectangles)
    while (Area > MinAreaSize)
    • 确定适合区域的最大轴平行矩形
      inner_rectangle1 (KnobFreeRegion, Row1, Column1, Row2, Column2)
      RectangleHeight := Row2 - Row1
      RectangleWidth := Column2 - Column1
    • 这是程序精华部分,使用一个difference完成 剩下区域最大矩形的提取。
      if (RectangleHeight > MinHeight and RectangleWidth > MinWidth)
      • 画矩形框
        gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
      • 合并区域但不改变区域对象个数
        concat_obj (KnobFreeRectangles, Rectangle, KnobFreeRectangles)
      • 求取两个区域不相交的区域
        difference (KnobFreeRegion, Rectangle, KnobFreeRegion)
      • 求取区域面积
        area_center (KnobFreeRegion, Area, Row, Column)
    • 否则跳出
      else
      break
      endif

endwhile
dev_set_draw (‘margin’)
dev_set_line_width (2)
dev_display (Image)
dev_set_colored (12)
dev_display (KnobFreeRectangles)

处理思路

这个例子是主要讲解了inner_rectangle1 算子的应用,求取适合区域的最大平行于坐标轴的内部矩形。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值