八 Halcon学习笔记——OCR初步创建并训练OCR分类器( 二 )


第五步:训练OCR分类器
读取训练文件,使用多层感知器创建一个OCR分类器,配置如下:
使用MLP训练一个OCR分类器,设置训练参数,即最大迭代次数、权重和容错率
* Create the classifier.We read out the classes from the train file.* Therefore, the training part of the program is generic and can be* used to train any OCR classifier.read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 20, 'normalization', 26, 42, OCRHandle)* Train the classifiertrainf_ocr_class_mlp (OCRHandle, TrainFile, 100, 0.01, 0.01, Error, ErrorLog)*
执行至此,我们已经完成了一个OCR分类器的训练,下面进行测试 。

八  Halcon学习笔记——OCR初步创建并训练OCR分类器

文章插图
第六步:测试
首先扩展图片,,输入一个矩形,其边长为图像的新定义域 。这意味着矩阵的所有像素都包含在进一步的操作中 。因此,通过读取或生成图像来获得相同的定义域 。矩阵的大小不会改变 。
然后进行快速二值化等处理,这一步操作与第二步类似,不加赘述 。
接下来使用刚刚训练的OCR分类器进行测试lp,对Image中排好序的利用刚刚训练的OCR分类器,句柄为进行测试,测试结果为Class,精度为 。
* Now test the classifier on the whole training imagefull_domain (Image, Image)* Segment characters the same way as beforebinary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold1)dilation_circle (Region, RegionDilation, 3.5)connection (RegionDilation, ConnectedRegions)intersection (ConnectedRegions, Region, RegionIntersection)sort_region (RegionIntersection, Characters, 'character', 'true', 'row')* Classificationdo_ocr_multi_class_mlp (Characters, Image, OCRHandle, Class, Confidence)*
执行至此,可以看到控制变量窗口处的Class变量为
完成此次OCR训练器的测试
第七步:显示
首先测得每个字符的面积、行、列,设置显示字体,显示Class的内容 。
* Display resultsarea_center (Characters, Area, Row, Column)dev_display (Image)set_display_font (WindowHandle, 16, 'sans', 'true', 'false')disp_message (WindowHandle, Class, 'image', Row - 16, Column + 8, 'blue', 'false')set_display_font (WindowHandle, 16, 'mono', 'true', 'false')disp_message (WindowHandle, 'Classification result', 'window', 12, 12, 'black', 'true')dev_set_check ('~give_error')delete_file (TrainFile)dev_set_check ('give_error')
执行至此,可以看到训练结果
总结
这个简单的OCR识别例程就分析到这里,首先要得到单个的训练数据,然后创建分类器,训练分类器,最后测试并显示 。