Halcon字符识别

分享Halcon字符识别相关代码:
其中内容包括字符检测、字符筛选、字符识别、字符显示等部分

************字符识别部分***********
 ***字符极性***
 LightDark1 := 'dark'
 ***字符库文件***
 Classifier:='train/char.omc1'
 
read_image(TestImage, 'image/test5.png')
count_channels (TestImage, Channels1)
if (Channels1 == 3)
      rgb1_to_gray (TestImage, GrayImage1)
elseif (Channels1 != 3 and Channels1 != 1)
      access_channel(TestImage, GrayImage1, 1)
else
      GrayImage1:=TestImage
endif
get_image_size (GrayImage1, Width1, Height1)
dev_set_draw ('margin')
*框选识别区域 
for Rindex := 1 to 10 by 1
 dev_clear_window ()
 dev_open_window (0, 0, Width1, Height1, 'black', WindowHandle1)
 dev_display (GrayImage1)
 disp_message(WindowHandle1, '框选字符区域\n 单击右键!', 'window', 12, 12, 'red', 'false')
 draw_rectangle1 (WindowHandle1, Row1, Column1, Row2, Column2)
 gen_rectangle1(Rectangle1, Row1, Column1, Row2, Column2)
 *字符区域
 reduce_domain (GrayImage1, Rectangle1, ImageReduced1)
 *阈值分割,提取前景
 auto_threshold (ImageReduced1, Regions1, 10)
 count_obj (Regions1, Number1)
  if (LightDark1=='dark')
      select_obj (Regions1, RObjectSelected, 1)
  elseif (LightDark1=='light')
      select_obj (Regions1, RObjectSelected, Number1-1)
  endif
 *设置字符膨胀参数
 dilation_rectangle1 (RObjectSelected, RegionDilation1, 1, 1)
 *设置字符粘连参数
 Radius1:=0.5
 *执行开运算,消除粘连
 opening_circle (RegionDilation1, RegionOpening1, Radius1)
 *分割字符
 connection (RegionOpening1, ConnectedRegions1)
 *字符宽度范围
 WidthMin1:=0
 WidthMax1:=200
 select_shape (ConnectedRegions1, WSelectedRegions1, 'width', 'and', WidthMin1, WidthMax1)
 *字符高度范围
 HeightMin1:=0
 HeightMax1:=200
 select_shape (WSelectedRegions1, HSelectedRegions1, 'height', 'and', HeightMin1, HeightMax1)
 *字符面积范围
 AreaMin1:=0
 AreaMax1:=4000
 select_shape (HSelectedRegions1, ASelectedRegions1, 'area', 'and', AreaMin1, AreaMax1)
 *字符角度范围
 PhiMin1:=-45
 PhiMax1:=45
 select_shape (ASelectedRegions1, PSelectedRegions1, 'phi', 'and', PhiMin1, PhiMax1)
  *矩形框显示字符位置
  shape_trans (PSelectedRegions1, RegionTrans1, 'rectangle1')
  *计数
  count_obj (PSelectedRegions1, CharacterNums1)
  *排序
  sort_region(PSelectedRegions1, SortedRegions1, 'character', 'true', 'column')
 *读取已训练分类器
  read_ocr_class_mlp(Classifier, OCRHandle1)
  *送入分类器字符识别
  do_ocr_single_class_mlp (SortedRegions1, ImageReduced1, OCRHandle1, 1, Class1, Confidence)
  *显示字符识别结果
  set_display_font (WindowHandle1, 35, 'mono', 'false', 'false')
  ArrayConfidence := []
  ArrayClass := []
  for IndexCharacter := 1 to CharacterNums1 by 1
      select_obj (SortedRegions1, CharacterSelected, IndexCharacter)  
      do_ocr_single_class_mlp(CharacterSelected, TestImage, OCRHandle1,1, Class, Confidence)
      ArrayConfidence := [ArrayConfidence,Confidence]
      ArrayClass := [ArrayClass,Class]
  endfor
   disp_message (WindowHandle1, ArrayClass, 'image', 0, 0, 'green', 'false')
   stop()
endfor

测试结果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值