训练分类器
训练分类器可分为以下几步: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