halcon文字识别

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image20180825142128138, 'C:/Users/Administrator/Desktop/20180825142128138.jpg')
rgb1_to_gray (Image20180825142128138, GrayImage)
scale_image (GrayImage, ImageScaled, 2.17949, -98)
threshold (ImageScaled, Regions, 87, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['width','area'], 'and', [84.43,2073.39], [219.51,47842.4])
union1 (SelectedRegions, RegionUnion)
orientation_region (RegionUnion, Phi)
area_center (RegionUnion, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(180), HomMat2D)
affine_trans_region (RegionUnion, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
affine_trans_image (GrayImage, ImageAffineTrans, HomMat2D, 'constant', 'false')
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage1)
threshold (GrayImage1, Regions1, 181, 220)
closing_rectangle1 (Regions1, RegionClosing, 6, 6)
connection (RegionClosing, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'width', 'and', 40.18, 156.15)
count_obj (SelectedRegions1, Number)
*要把断开的字形成一个整体的连通域union将所有连通域联合,union2将指定两个连通域联合
*在多个连通域中选择单个连通域,可在该图像上右击显示目录查看是第几个连通域,
*并将它们进行联合,或者先对这些连通域进行个排序,sort_region
select_obj (SelectedRegions1, ObjectSelected, 1)
*数
*字
select_obj (SelectedRegions1, ObjectSelected1, 2)
select_obj (SelectedRegions1, ObjectSelected2, 8)
union2 (ObjectSelected1, ObjectSelected2, RegionUnion1)
*图
select_obj (SelectedRegions1, ObjectSelected3, 3)
*像
select_obj (SelectedRegions1, ObjectSelected4, 4)
*处
select_obj (SelectedRegions1, ObjectSelected5, 5)
select_obj (SelectedRegions1, ObjectSelected6, 6)
union2 (ObjectSelected5, ObjectSelected6, RegionUnion2)
*理
select_obj (SelectedRegions1, ObjectSelected7, 7)
*与
select_obj (SelectedRegions1, ObjectSelected8, 9)
select_obj (SelectedRegions1, ObjectSelected9, 14)
union2 (ObjectSelected8, ObjectSelected9, RegionUnion3)
*机
select_obj (SelectedRegions1, ObjectSelected10, 10)
*器
select_obj (SelectedRegions1, ObjectSelected11, 11)
*视
select_obj (SelectedRegions1, ObjectSelected12, 12)
*觉
select_obj (SelectedRegions1, ObjectSelected13, 13)
select_obj (SelectedRegions1, ObjectSelected15, 15)
union2 (ObjectSelected15, ObjectSelected13, RegionUnion4)
*创建一个空的对象元组
gen_empty_obj (EmptyObject)

*将其它连通域添加到该对象元组中
concat_obj (EmptyObject, ObjectSelected, EmptyObject)
concat_obj (EmptyObject, RegionUnion1, EmptyObject)
concat_obj (EmptyObject, ObjectSelected3, EmptyObject)
concat_obj (EmptyObject, ObjectSelected4, EmptyObject)
concat_obj (EmptyObject, RegionUnion2, EmptyObject)
concat_obj (EmptyObject, ObjectSelected7, EmptyObject)
concat_obj (EmptyObject, RegionUnion3, EmptyObject)
concat_obj (EmptyObject, ObjectSelected10, EmptyObject)
concat_obj (EmptyObject, ObjectSelected11, EmptyObject)
concat_obj (EmptyObject, ObjectSelected12, EmptyObject)
concat_obj (EmptyObject, RegionUnion4, EmptyObject)
*【1】创建trf训练文件,即将字符图像和字符关联起来
*如果这些字符图像在一幅图像中,一个一个添加用append_ocr_trainf,
*可以直接用write_ocr_trainf把所有字符图像全部写进
trainfile :='F://words.trf'
words :=['数','字','图','像','处','理','与','机','器','视','觉']
count_obj (EmptyObject, Number1)
*pen_file ('D:\\2.trf', 'output', FileHandle)
for Index1:=1 to Number1 by 1
    select_obj (EmptyObject, ObjectSelected14,  Index1)
     append_ocr_trainf (ObjectSelected14, ImageAffineTrans, words[Index1-1], 'G:/2.trf')
endfor


*【2】读取训练文件
read_ocr_trainf_names ('G:/2.trf', CharacterNames, CharacterCount)
*【3】创建模型,注意第五个参数为识别结果的所有类别
create_ocr_class_mlp (10, 10, 'constant', 'default', CharacterNames, 80, 'none', 10, 42, OCRHandle)
*【4】训练模型
trainf_ocr_class_mlp (OCRHandle, 'G:/2.trf', 200, 1, 0.01, Error, ErrorLog)
*保存训练好的模型,omc文件
write_ocr_class_mlp (OCRHandle, 'G:/words.omc')
*清除句柄
clear_ocr_class_mlp (OCRHandle)
*【6】读取训练好的模型
read_ocr_class_mlp ('G:/words.omc', OCRHandle1)
*【7】识别
do_ocr_multi_class_mlp (EmptyObject,  ImageAffineTrans, OCRHandle1, Class, Confidence)
dev_display (Image20180825142128138)
area_center (ObjectSelected14, Area1, Row1, Column1)
*设置显示字体的大小
set_display_font (WindowHandle, 26, 'mono', 'true', 'false')
disp_message (WindowHandle, Class, 'ImageAffineTrans', 0, 0, 'black', 'true')

猜你喜欢

转载自blog.csdn.net/lujun1632/article/details/88561704