QQ登录

只需一步,快速开始

halcon工业视觉用blob分析方法计算电路板接头个数

[ 复制链接 ]
例程实现电路板上接头个数的计算,图片使用halcon自带的。
使用了blob分析方法,涉及的函数为blob分析中经典组合的几个。
下面是具体代码

halcon工业视觉用blob分析方法计算电路板接头个数

halcon工业视觉用blob分析方法计算电路板接头个数

  1. read_image (Image, '1.png')
  2. get_image_size (Image, Width, Height)
  3. dev_close_window ()
  4. dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
  5. dev_set_line_width (3)
  6. dev_set_draw ('margin')
  7. dev_display (Image)
  8. stop()
  9. Num := 4
  10. for I := 0 to Num-1 by 1
  11.     file := I

  12. d'+'.png'
  13.     read_image (Bond, file)
  14.     dev_display (Bond)
  15.     *计算图像最大最小灰度值
  16.     min_max_gray (Bond, Bond, 0, Min, Max, Range)
  17.     *用计算出的最大灰度值进行分割
  18.     threshold (Bond, Bright, Max - 80, 255)
  19.     shape_trans (Bright, Die, 'rectangle2')
  20.     dev_display (Die)
  21.     *提取出图像中模块
  22.     reduce_domain (Bond, Die, DieGrey)
  23.     min_max_gray (Die, Bond, 0, Min, Max, Range)
  24.     *提取出连接头所在黑色区域
  25.     threshold (DieGrey, Wires, 0, Min + 30)
  26.     *填充区域内满足一定条件的洞
  27.     fill_up_shape (Wires, WiresFilled, 'area', 1, 100)
  28.     *开运算,去除毛刺等。粗略定位接头
  29.     opening_circle (WiresFilled, Balls, 9.5)
  30.     connection (Balls, SingleBalls)
  31.     *筛选出非接头区域
  32.     select_shape_std (SingleBalls, Rect, 'rectangle1', 90)
  33.     *计算出接头与非接头区域差值,表示为接头区域
  34.     difference (SingleBalls, Rect, IntermediateBalls)
  35.     gen_empty_region (Forbidden)
  36.     expand_gray (IntermediateBalls, Bond, Forbidden, RegionExpand, 4, 'image', 6)
  37.     opening_circle (RegionExpand, RoundBalls, 15.5)
  38.     sort_region (RoundBalls, FinalBalls, 'first_point', 'true', 'column')
  39.     smallest_circle (FinalBalls, Row, Column, Radius)
  40.     Num := |Radius|
  41.     dev_display (Bond)
  42.     dev_display (RoundBalls)
  43.     dev_disp_text ('接头个数:'+Num

  44. d', 'window', 20, 20, 'black', [], [])
  45.     stop ()
  46. endfor
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索