halcon OCR识别

训练分类器 

       训练分类器可分为以下几步:1、分割字符;2、调用append_ocr_trainf函数将字符加入到训练集中;3、使用create_ocr_class_mlp函数创建分类器;4、调用trainf_ocr_class_mlp函数来训练分类器;5、最后使用write_ocr_class_mlp函数来将分类器写入到文件(.omc格式)中

分类器识别

     识别可分为以下几步:1、对需要识别的图像进行基本的处理;2、使用read_ocr_class_mlp函数来获取分类器;3、最后使用do_ocr_multi_class_mlp函数来进行识别。

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
gen_empty_obj (EmptyObject)
read_image (Image, 'D:/_Study/train_ocr/test1.jpg ')
rgb1_to_gray (Image, GrayImage)
for Index := 1 to 4 by 1
 disp_message (WindowHandle, '请框选单个汉字区域,右键确认:','window', 12, 12, 'yellow', 'false')

 **画个矩形
 draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
 **根据画的矩形生成对应的矩形
 gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
 *裁出来
 reduce_domain (GrayImage, Rectangle, ImageReduced1)
 *阈值
 threshold (ImageReduced1, Region1, 128, 255)
 *开运算,我看这步省了也行
 opening_circle (Region1, RegionOpening, 1.5)
 *准备接收所有提取的字符区域
 concat_obj (EmptyObject, RegionOpening, EmptyObject)
endfor

words:=['测','试','文','字']

*排个序
sort_region (EmptyObject, SortedRegions1, 'character', 'true', 'row')

for Index1:=1 to 4 by 1
 select_obj (SortedRegions1, ObjectSelected1, Index1)
 *(1)将待训练样本添加到训练集中
 append_ocr_trainf (ObjectSelected1, Image, words[Index1-1], 'D:/_Study/train_ocr/2.trf')
 read_ocr_trainf_names ('D:/_Study/train_ocr/2.trf', CharacterNames, CharacterCount)
endfor

*read_ocr_trainf_names ('D:/_Study/train_ocr/2.trf', CharacterNames, CharacterCount)
*(2)创建mlp分类器
create_ocr_class_mlp (8, 10, 'constant', 'default', words, 80, 'none', 10, 42, OCRHandle)
*(3)使用样本训练mlp分类器
trainf_ocr_class_mlp (OCRHandle, 'D:/_Study/train_ocr/2.trf', 200, 1, 0.01, Error, ErrorLog)
*(4)将OCR分类器写入文件
write_ocr_class_mlp (OCRHandle, 'D:/_Study/train_ocr/2.omc')

*(5)使用分类器来进行识别,先导入另一张做测试的图
read_image (Image1, 'D:/_Study/train_ocr/test2.jpg')
rgb1_to_gray (Image1, GrayImage1)
threshold (GrayImage1, Regions, 117, 255)

connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'height', 'and', 50, 99999)
sort_region (SelectedRegions, SortedRegions, 'upper_left', 'true', 'column')

*(6)开始识别   a、获取分类器;b、使用分类器分割字符
read_ocr_class_mlp ('D:/_Study/train_ocr/2.omc', OCRHandle1)
do_ocr_multi_class_mlp (SortedRegions, GrayImage1, OCRHandle1, Class, Confidence)
disp_message (WindowHandle, '识别结果:', 'image', 30, 50, 'white', 'false')

for i:=1 to 4 by 1
    disp_message (WindowHandle, Class[i-1], 'image', 30, 120+40*i, 'yellow', 'false')
endfor

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值