首页 > 其他分享 >Halcon图像的 OCR 识别&训练字符

Halcon图像的 OCR 识别&训练字符

时间:2023-04-24 12:12:25浏览次数:38  
标签:字符 ocr Halcon mlp OCRHandle 控制参数 OCR class 输入

2.1识别 OCR 的流程和方法

处理图像使得数字或是字母为白底黑字->创建字符识别句柄->识别->清除句柄

       算子:read_ocr_class_mlp( : : FileName : OCRHandle)

示例:read_ocr_class_mlp ('Document_0-9A-Z_NoRej.omc', OCRHandle)

'Document_0-9A-Z_NoRej.omc'(输入控制参数):输入识别类型

OCRHandle(输出控制参数): 输出识别句柄

 

      

算子:do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)

示例:do_ocr_multi_class_mlp (ObjectSelected, ImageInvert, OCRHandle, Class, Confidence)

ObjectSelected(输入对象):输入识别区域

ImageInvert(输入对象):输入识别图像

OCRHandle(输入参数):输入句柄

Class(输入对象):输出识别的字符

Confidence(输出参数):输出识别的相似度

算子:comment( : : Comment : )

示例:clear_ocr_class_mlp (OCRHandle)

OCRHandle(输入控制参数):输入识别句柄

 

2.2训练字符识别库文件流程和方法

1.提取图像中的字符->

2.将每个字符加到训练文件中(append_ocr_trainf)->

3.除重(uniq)->

4.创建一个使用 多层感知器(create_ocr_class_mlp)->

5.利用多层感知器创建一个新的OCR分级器(trainf_ocr_class_mlp)->

6.将OCR分级器的OCRHandle写入文件的FileName(文件名)(write_ocr_class_mlp)->

7.训练字符文件->

8.读取训练后的文件 生成识别的分类器句柄read_ocr_class_mlp ->

9.识别字符:识别单个字符(do_ocr_single_class_mlp),识别多个字符(do_ocr_multi_class_mlp)->

10.关闭分类器句柄(clear_ocr_class_mlp)

 

**************************详细步骤**********************

 

2.将每个字符加到训练文件中(append_ocr_trainf)

算子:append_ocr_trainf(Character, Image : : Class, TrainingFile : )

示例:append_ocr_trainf (ObjectSelected, ImageReduced, tuple[Index], 'train_ocr'+'.trf')  

ObjectSelected(输入对象1):字符Regio

ImageReduced(输入对象2):字符Image

Tuple(输入控制参数1):字符文本

'train_ocr'+'.trf'(输入控制参数2):OCR训练的.trf文件路径

示例:chans:=uniq(sort(tuple))

Tuple(输入控制参数):字符集数组

 

3.除重(uniq)

示例:chans:=uniq(sort(tuple))

Tuple(输入控制参数):字符集数组

 

4.创建一个使用 多层感知器(create_ocr_class_mlp)

算子:create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed :OCRHandle)

示例:create_ocr_class_mlp (8, 10, 'constant', 'default', chans, 80, 'none', 10, 42, OCRHandle)

8(输入控制参数1):字符的宽度(默认)

10(输入控制参数2):字符的宽度(默认)

'constant'(输入控制参数3):字符缩放样式(默认)

'default'(输入控制参数4): 用于分类的特征(默认)

Chans(输入控制参数5):要读取的字符集的所有字符

80(输入控制参数6):对MLP隐藏单元数(默认)

‘none'(输入控制参数7):用于转换特征向量的预处理类型(默认)

10(输入控制参数8):预处理参数:变换特征的个数(默认)

42(输入控制参数9):随机数生成器的种子值,用于初始化具有随机值的MLP。(默认)

OCRHandle(输出控制参数):输出OCR分类器的句柄

 

5.利用多层感知器创建一个新的OCR分级器(trainf_ocr_class_mlp)

算子:trainf_ocr_class_mlp( : : OCRHandle, TrainingFile, MaxIterations, WeightTolerance, ErrorTolerance : Error, ErrorLog)

示例:trainf_ocr_class_mlp (OCRHandle, 'train_ocr.trf', 200, 1, 0.01, Error, ErrorLog)

OCRHandle(输入控制参数1):OCR分类器的句柄

'train_ocr.trf'(输入控制参数2),:训练文件名称

200(输入控制参数3):优化算法的最大迭代次数(默认)

1(输入控制参数4):优化算法两次迭代中MLP权重差的阈值(默认)

0.01(输入控制参数5):优化算法两次迭代训练数据上MLP平均误差的阈值。(默认)

Error(输入控制参数6):训练数据中MLP的平均误差(默认)

ErrorLog(输入控制参数7):训练数据上的MLP的平均误差作为优化算法迭代次数的函数。(默认)

 

6.将OCR分级器的OCRHandle写入文件的FileName(文件名)

算子:write_ocr_class_mlp( : : OCRHandle, FileName : )

示例:write_ocr_class_mlp (OCRHandle, 'train_ocr')

OCRHandle(输入控制参数1):OCR分类器的句柄

'train_ocr'(输入控制参数2):保存OCR的的.omc分类器到文件

 

7.训练字符文件

 

8.读取训练后的文件 生成识别的分类器句柄read_ocr_class_mlp

算子:read_ocr_class_mlp( : : FileName : OCRHandle)

示例:read_ocr_class_mlp ('C:/Users/Administrator/Desktop/学习文件夹/练习/练习11/train_ocr.omc', OCRHandle1)

       'C:/Users/Administrator/Desktop/学习文件夹/练习/练习11/train_ocr.omc'(输入控制参数):输入训练好的文件地址

       OCRHandle1(输出控制参数):输出OCR分类器的句柄

 

9.识别字符:识别单个字符(do_ocr_single_class_mlp),识别多个字符(do_ocr_multi_class_mlp)

识别单个

算子:do_ocr_single_class_mlp(Character, Image : : OCRHandle, Num : Class, Confidence)

示例:do_ocr_single_class_mlp (SortedRegions1, ImageScaled2, OCRHandle1, 1, Class1, Confidence1)

SortedRegions1(输入对象1):输入要识别的字符区域

ImageScaled2(输入对象2):输入需要识别的图像

OCRHandle1(输入控制参数1):输入OCR 分类器的句柄

1(输入控制参数2):输入要确定的最佳类别的数量(默认)

Class1(输入控制参数3):输出使用 MLP 对字符进行分类的结果(默认)

Confidence1(输入控制参数4):输出字符识别得分(默认)

 

识别多个:

算子:do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)

示例:do_ocr_multi_class_mlp (ObjectSelected1, ImageScaled2, OCRHandle1, Class, Confidence)

ObjectSelected1(输入对象1):输入要识别的字符区域

ImageScaled2(输入对象2):输入需要识别的图像

OCRHandle1(输入控制参数1):输入OCR 分类器的句柄

Class(输入控制参数2):输出MLP 对字符进行分类的结果(默认)

Confidence(输入控制参数3):输出字符识别得分(默认)

 

10.关闭分类器句柄(clear_ocr_class_mlp)

算子:clear_ocr_class_mlp( : : OCRHandle : )

示例:clear_ocr_class_mlp (OCRHandle1)

OCRHandle1(输入控制参数):分类器句柄

标签:字符,ocr,Halcon,mlp,OCRHandle,控制参数,OCR,class,输入
From: https://www.cnblogs.com/ksjqsj/p/17349024.html

相关文章

  • 回溯算法:剑指 Offer 38. 字符串的排列
    题目描述:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制:1<=s的长度<=8  classSolution{Set<String>res=newHashSet<>();publicString[]permutation(Strings){b......
  • 使用cin和getline()输入字符串
    相同点:作为while的条件时,终止条件均为:Ctrlz(或则Z),执行本循环,执行完后进入下一个循环均为换行符。1strings;2while(cin>>s)3{4cout<<"youinputis:"<<endl;5cout<<s<<endl;6}1strings;2whi......
  • python中的字符串和列表
    name="1"name='1'name="""1"""""name='''1'''#都为正确的字符串定义方式#字符串中一个字符占一个空间 #字符串切片格式为[起始:结束:步长]#从起始开始,到结束前一位结束不含结束本身,,默认步长为1,步长可为正可为负a[-4:]#取出a字符串的最后四位#如果只有一......
  • Halcon基础学习(一)
    Halcon基础学习(一)初见目标:提取出U4的位置坐标结果:编程逻辑读取图片按照RGB3通道处理图片使用中值滤波使用灰度滤波使用二值化滤波组件区域分割使用特征直方图设置上下限直到过滤到唯一一个以后,使用区域选择工具在新打开的图片上面绘制十字叉......
  • JavaScript的类型转换(字符转数字,数字转字符)
    在Java中,基本类型之间的强制转换也不是这样的,比如,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。可见,不能把JavaScript中的类型转换看作为“强制类型转换”。在JavaSc......
  • MySQL日期字符串转日期格式,日期格式数据转为字符串
    如下:1、日期字符串转换为日期格式数据SELECTDATE('2017-02-11');SELECTDATE('2017/02/11');SELECTSTR_TO_DATE('2015/02/25','%Y/%m/%d');SELECTSTR_TO_DATE('2015-02-25','%Y-%m-%d');返回日期格式数据 2、DATE_FORMAT......
  • Halcon图像滤波&中值滤波&&高斯滤波&图像加减
    均值滤波:mean_image算子:mean_image(Image : ImageMean : MaskWidth, MaskHeight :)示例:mean_image(Image5,ImageMean1,3,3)Image5(输入对象):输入灰度图像ImageMean1(输出对象):输出均值滤波后的灰度图像3(输入控制参数1):均值矩阵的宽,数值通常为奇数,数值越大效果越明显3(输入控制......
  • Halcon图像滤波&中值滤波&&高斯滤波&图像加减
    均值滤波:mean_image算子:mean_image(Image : ImageMean : MaskWidth, MaskHeight :)示例:mean_image(Image5,ImageMean1,3,3)Image5(输入对象):输入灰度图像ImageMean1(输出对象):输出均值滤波后的灰度图像3(输入控制参数1):均值矩阵的宽,数值通常为奇数,数值越大效果越明显3(输......
  • redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 r
    内容回顾#dockerfile命令 RUNCOPYADDENVEXPOSEWORKDIRCMD:可以用新命令覆盖的ENTRYPOINT:不可以被覆盖#容器要运行,必须有个前台进程#dockerfile部署图书管理系统项目 FROMpython:3.8MAINTAINERlqzWORKDIR/soft......
  • 盘点6个Pandas中批量替换字符的方法
    今日鸡汤朱雀桥边野草花,乌衣巷口夕阳斜。大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【dcpeng】的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习。想问一下我有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换呢......