Halcon汉字OCR训练识别

起初想到做这个是因为项目里有几个发光字要识别,而Halcon自带的OCR里面没有找到汉字的分类器,所以想着自己训练一下,这样可以更有针对性。

做为一个肤浅的初学者,学halcon也是个逐步摸索的过程,感谢老乡Z提供的入门资料,这里记录下实验过程。

步骤:
  • 创建训练文件。

  • 训练OCR分类器

  • 识别测试图像。

创建训练文件

这一步主要是把训练图像中的汉字部分图像和文字符号关联起来。比如图像中找到了几个汉字区域,我们把这几个字的区域存储下来,然后建立个数组,里面放进去跟存储区中一一对应的汉字字符,这样就建立了关联。然后把这个关联关系存储在一个.trf文件中。

训练OCR分类器

这部分由两个选择,可以用svm,也可以用mlp。这里我用了mlp作例子。训练这个过程比较简单,主要是三个函数:

create_ocr_class_mlp

trainf_ocr_class_mlp

write_ocr_class_mlp


create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 80, 'none', 10, 42, OCRHandle)

trainf_ocr_class_mlp (OCRHandle, 'G:/2.trf', 200, 1, 0.01, Error, ErrorLog)

write_ocr_class_mlp (OCRHandle, 'G:/2.omc')

识别汉字字符

接下来就可以导入测试图象检验下分类器的检测效果了,首先对图像做一个预处理,提取出需要检测的文字区域,然后,用read_ocr_class_mlp读取分类器,使用do_ocr_multi_class_mlp进行文字识别。

详细过程如下:

WindowHandle:=3600
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
gen_empty_obj (EmptyObject)
read_image (Image, 'G:/Yq/Code/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)
 append_ocr_trainf (ObjectSelected1, Image, words[Index1-1], 'G:/2.trf')
endfor

read_ocr_trainf_names ('G:/2.trf', CharacterNames, CharacterCount)
create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 80, 'none', 10, 42, OCRHandle)
trainf_ocr_class_mlp (OCRHandle, 'G:/2.trf', 200, 1, 0.01, Error, ErrorLog)
write_ocr_class_mlp (OCRHandle, 'G:/2.omc')

*导入另一张做测试的图
read_image (Image1, 'G:/Yq/Code/test2.jpg')

*二值化
threshold (Image1, testwordregion, 125, 255)

*将像素相连的区域合并成一个Element
connection (testwordregion, ConnectedwordRegions)

*筛选符合条件的区域
select_shape (ConnectedwordRegions, SelectedwordRegions, 'height', 'and', 50, 250)

*从左到右,排个序
sort_region (SelectedwordRegions, SortedRegions2, 'upper_left', 'true', 'column')

*数数有几个字
count_obj(SortedRegions2, Number)

*开始识别
read_ocr_class_mlp ('G:/2.omc', OCRHandle1)
do_ocr_multi_class_mlp (SortedRegions2, Image1, 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

实验结果

首先准备训练图像和测试图象,我做了两张图

  • 训练图:


    test1.jpg
  • 测试图:


    test2.jpg

    以上程序运行正常的话,会在第一个环节要求标注要训练的字符区域

p3.jpg

标注完成后,会自动识别与分割区域:


p4.jpg

导入测试图象后,后面会得到识别结果:

p5.jpg

接下来可能会考虑更复杂的文字识别情况,有空再更新。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容

  • 内心的空虚,可能很多自己一直讨厌的确实自己最想去做的,也或者是以前的经历所导致!比如对于食物明明已经很饱了却还是抑...
    我就是鱼鱼鱼阅读 170评论 0 0
  • 我们家宝贝今年6岁,马上就上小学了,作为妈妈的我,也经常会想自己到底应该用什么样的方式去教育孩子。 是鼓励孩子开开...
    纤陌颜阅读 915评论 2 1
  • 冬日的黄昏丢下一轮暖阳随云霞起舞,西北风趁机爬上耳鬓悄声哽咽,身后的几抹朱红飞奔着,像新年的爆竹更像灯火通明的除夕...
    米奥儿阅读 232评论 0 1
  • 为了进一步落实《全民健身计划(2016-2020年)》,促进群众体育发展,倡导全民健身新时尚,为市民搭建一个...
    孝颜阅读 584评论 1 0