QQ登录

只需一步,快速开始

5.5 halcon 实现字符轮廓提取

[ 复制链接 ]
当前帖子演示对提取的XLD精度的字符轮廓进行排序功能
2019-03-27_162439.jpg
首先调用threshold_sub_pix将图片快速分割,提取亚像素 精度边缘轮廓。
随后就可以调用sort_contours_xld函数进行轮廓的筛选。
可以用算子sort_contours_xld对筛选的结果轮廓对待排序。
具体代码与注释如下:
  1. *当前帖子演示对提取的XLD精度的字符轮廓进行排序功能
  2. dev_close_window ()
  3. dev_update_off ()
  4. read_image (Image, 'letters')
  5. get_image_size (Image, Width, Height)
  6. dev_open_window (0, 0, Width / 2, Height / 2 + 100, 'black', WindowHandle)
  7. dev_set_part (-100, 0, Height - 1, Width - 1)
  8. set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
  9. dev_display (Image)
  10. set_line_style (WindowHandle, [])
  11. dev_set_color ('red')
  12. *简单快速的轮廓生成
  13. threshold_sub_pix (Image, Edges, 128)
  14. *进行轮廓 特征的选取,'contour_length'为周长特征,选择轮廓周长在10--200间的轮廓。
  15. *-0.5, 0.5为第二特征范围,在这里无意义。
  16. select_contours_xld (Edges, SelectedContours, 'contour_length', 10, 200, -0.5, 0.5)
  17. * Sort the unsorted output:
  18. * First sort the contours by row coordinates. The position of a
  19. * contour is given by the upper left corner of its surrounding rectangle.
  20. *进行无序轮廓的排序。
  21. *首先按列坐标进行轮廓的排序,轮廓的位置通过字符外接矩形左上角确定。
  22. count_obj (SelectedContours, Number)
  23. dev_set_line_width (3)
  24. * 依据轮廓相对位置,进行轮廓分类,SelectedContours, SortedContours1分别为输入轮廓。
  25. *'character'为排序种类字符形式, 'true', 'column'分别表示递增列优先排序。
  26. sort_contours_xld (SelectedContours, SortedContours1, 'character', 'true', 'column')
  27. dev_display (Image)
  28. disp_message (WindowHandle, 'XLD contours sorted by column', 'window', 12, 12, 'black', 'true')
  29. *进行分类后轮廓从上到下逐一显示
  30. for I := 1 to Number by 1
  31.     select_obj (SortedContours1, ObjectSelected, I)
  32.     dev_display (ObjectSelected)
  33.     wait_seconds (0.01)
  34. endfor
  35. disp_continue_message (WindowHandle, 'black', 'true')
  36. stop ()
  37. dev_clear_window ()
  38. *依据轮廓相对位置,进行轮廓分类,'true', 'row'分别表示递增行优先排序。
  39. sort_contours_xld (SortedContours1, SortedContours2, 'character', 'true', 'row')
  40. dev_display (Image)
  41. *进行分类后轮廓从左到右逐一显示
  42. disp_message (WindowHandle, 'XLD contours sorted by row', 'window', 12, 12, 'black', 'true')
  43. for I := 1 to Number by 1
  44.     select_obj (SortedContours2, ObjectSelected, I)
  45.     dev_display (ObjectSelected)
  46.     wait_seconds (0.01)
  47. endfor
复制代码


回复

使用道具 举报

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