ch08_OCR字符识别

1.利用Halcon内置模型进行识别

1.工牌识别ocr

1排序

复制代码
*对连通域区域集合进行字符模式排序,适合单行/多行字符,按选定规则重排区域顺序
*参数1:   输入 待排序的区域集合ConnectedRegions2
*参数2:   输出 排序完成后的区域集合SortedRegions
*参数3:   输入 排序基准特征:'character'字符排序模式
*参数4:   输入 是否升序 'true'=升序,'false'=降序
*参数5:   输入 按哪个坐标排序 'row'按行坐标;'column'按列坐标
sort_region (ConnectedRegions2, SortedRegions, 'character', 'true', 'row')

2选中模型

复制代码
*读取训练好的MLP多层感知机OCR分类器文件,加载OCR模型句柄
*参数1:   输入 OCR模型文件路径及名称 'Document_NoRej.omc'
*参数2:   输出 OCR模型句柄OCRHandle,后续识别算子使用
read_ocr_class_mlp ('Document_NoRej.omc', OCRHandle)

3进行识别

复制代码
*使用MLP OCR模型一次性对多个字符区域批量执行字符识别
*参数1:   输入 排序完成的字符区域集合SortedRegions
*参数2:   输入 用于识别的图像ImageInvert
*参数3:   输入 OCR模型句柄OCRHandle(read_ocr_class_mlp加载得到)
*参数4:   输出 识别出的字符数组Class
*参数5:   输出 对应每个字符的置信度数组Confidence,范围0~1
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)

2.识别准度技巧

1.自己创建画布指定区域绘制为白色
复制代码
*将区域绘制到图像上,填充指定灰度值
*参数1:   输入 待绘制的区域SortedRegions
*参数2:   输入 绘制的底图ImageReduced
*参数3:   输出 绘制完成后的结果图像ImageResult
*参数4:   输入 填充的灰度值255(白色)
*参数5:   输入 绘制模式,'fill'代表填充整个区域
paint_region (SortedRegions, ImageReduced, ImageResult, 255, 'fill')
2.膨胀一下识别字符可以准一点

2.Halcon训练模型

1.创建训练文件 xxx.trf

复制代码
* 1.创建训练文件 xxx.trf
* 参数一:输入需要训练的字符区域
* 参数二:输入该区域对应的图片
* 参数三:输入需要训练的类别
* 参数四:输入训练文件名称或路径
write_ocr_trainf (SortedRegions, ImageReduced,\
                  class, 'train_ocr')

* 读trf文件中的类别信息
* 参数一:输入训练文件名称或者路径
* 参数二:输出的训练文件中训练类别
* 参数三:输出每个训练类别下的字符数量
read_ocr_trainf_names ('train_ocr', CharacterNames, CharacterCount)

2.创建一个mlp分类器

复制代码
* 2.创建一个mlp分类器
* mlp是机器学习模型(人工神经网络模型)
* 参数一:输入字符宽度
* 参数二:输入字符高度
* 参数三:字符缩放样式
* 参数四:输入用于分类的特征
* 参数五:输入要识别的字符集中所有字符
* 参数六:对MLP隐藏单元数
* 参数七:用于转换特征向量的预处理类型
* 参数八:变换特征个数
* 参数九:随机数生成器种子值
* 参数十:输出OCR分类器的句柄
create_ocr_class_mlp (8, 10, 'constant',\
                      'default',\
                      class,\
                      80, 'none', 10, 42, OCRHandle)

3.开始训练

复制代码
* 3.开始训练
* 参数一:输入OCR分类器句柄
* 参数二:OCR训练的trf文件路径
* 参数三:输入优化算法的最大迭代次数(训练200轮)
* 参数四:MLP权重差的阈值
* 参数五:MLP平均误差阈值
* 参数六:训练数据MLP模型中的平均误差
* 参数七:...迭代次数的函数
trainf_ocr_class_mlp (OCRHandle, 'train_ocr.trf',\
                      200, 1, 0.01, Error, ErrorLog)

4.写omc模型文件

复制代码
* 4.写omc模型文件
* 参数一:输入字符模型句柄
* 参数二:输入输出的字符模型保存路径
write_ocr_class_mlp (OCRHandle, 'gushi')
相关推荐
He BianGu1 个月前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
2601_962300471 个月前
halconpython联合开发网_C#与Halcon联合开发实例,并做了可移动的ROI库
图像处理·c·halcon·软件开发·roi
c#上位机2 个月前
tuple_max求数组中的最大值
c#·halcon·机器视觉
youcans_5 个月前
【HALCON机器视觉实战】专栏介绍
图像处理·人工智能·计算机视觉·halcon
爱凤的小光5 个月前
Halcon之-晶圆切片小例子
halcon
爱凤的小光6 个月前
HALCON 分类算法完全指南
halcon
H Journey6 个月前
Halcon介绍
opencv·halcon
youcans_6 个月前
【HALCON 实战入门】5. 相机接入与图像采集
图像处理·人工智能·计算机视觉·halcon·图像采集
youcans_6 个月前
【HALCON 实战入门】4. 图像读取、显示与保存
图像处理·人工智能·计算机视觉·halcon