halcon字符识别快速入门

注意:如果是争对汉字的识别,请翻阅我另一篇博客:https://blog.csdn.net/weixin_44490080/article/details/90208492

此处仅介绍24个字母以及数字的识别,后面还有一些关键算子的介绍

 

识别用的图片:

halcon代码:

*自动文本阅读器的快速使用demo
read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/2333.png')
rgb1_to_gray (Image, GrayImage)
*创建自动文本阅读器模型
create_text_model_reader ('auto', 'Industrial_Rej.omc', TextModel)
*设置自动文本阅读器模型的参数 
set_text_model_param (TextModel, 'add_fragments', 'true')
*识别
find_text (GrayImage, TextModel, TextResultID)
*显示字符截取的模型
get_text_object (Characters, TextResultID, 'all_lines')
*从阅读器模型中提取识别的字符
get_text_result (TextResultID, 'class', Classes)
*显示识别结果
Classess:=''
for Index := 0 to |Classes|-1 by 1
    Classess:=Classess+Classes[Index]
endfor
disp_message (3600, '识别结果:'+Classess, 'window', 0, 0, 'black', 'false')

执行结果:

创建自动文本阅读器模型

create_text_model_reader:

参数介绍:

Mode (input_control)  string → (string)
文本模型的模式
默认值: 'auto'
List of values: 'auto', 'manual'


OCRClassifierMLP (input_control)  string → (string / integer)
选择ocr分类器
默认值: 'Industrial_Rej.omc'
Suggested values: 'Document_A-Z+_NoRej.omc', 'Document_0-9A-Z_NoRej.omc', 'Document_0-9_NoRej.omc', 'Document_NoRej.omc', 'Document_A-Z+_Rej.omc', 'Document_0-9A-Z_Rej.omc', 'Document_0-9_Rej.omc', 'Document_Rej.omc', 'DotPrint_A-Z+.omc', 'DotPrint_0-9A-Z.omc', 'DotPrint_0-9.omc', 'DotPrint_0-9+.omc', 'DotPrint.omc', 'HandWritten_0-9.omc', 'Industrial_A-Z+_NoRej.omc', 'Industrial_0-9A-Z_NoRej.omc', 'Industrial_0-9_NoRej.omc', 'Industrial_0-9+_NoRej.omc', 'Industrial_NoRej.omc', 'Industrial_A-Z+_Rej.omc', 'Industrial_0-9A-Z_Rej.omc', 'Industrial_0-9_Rej.omc', 'Industrial_0-9+_Rej.omc', 'Industrial_Rej.omc', 'MICR.omc', 'OCRB_A-Z+.omc', 'OCRA_0-9A-Z.omc', 'OCRA_0-9.omc', 'OCRA.omc', 'OCRB_A-Z+.omc', 'OCRB_0-9A-Z.omc', 'OCRB_0-9.omc', 'OCRB.omc', 'OCRB_passport.omc', 'Pharma_0-9A-Z.omc', 'Pharma_0-9.omc', 'Pharma_0-9+.omc', 'Pharma.omc', 'SEMI.omc'

 

TextModel (output_control)  text_model → (integer)
输出一个新的文本模型

 

设置自动文本阅读器模型参数

set_text_model_param:

模式= 'auto'的文本模型参数

 

“min_contrast”:

人物与周围背景的最小对比。

 

值列表:整数或浮点值之间的1和255的字节图像和1和65.535之间的uint2图像

 

默认值:15

 

“极性”:

“dark_on_light”(如果要分割的文本比背景颜色深),“light_on_dark”(如果要分割的文本比背景颜色浅),“both”(如果两种文本都要分割)。

 

值列表:'dark_on_light'、'light_on_dark'、'both'

 

默认值:‘都’

 

“min_char_height”:

字符的最小高度(以像素为单位)。如果要分割任意高度的文本,可以传递“auto”。注意“min_char_height”只引用字符。标点符号或分隔符的高度不受“min_char_height”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“max_char_height”:

以像素为单位的字符的最大高度。如果要分割任意高度的文本,可以传递“auto”。注意“max_char_height”只引用字符。标点符号或分隔符的高度不受“max_char_height”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“min_char_width”:

字符的最小宽度(以像素为单位)。如果要分割任意宽度的文本,可以传递“auto”。注意“min_char_width”只引用字符。标点符号或分隔符的宽度不受“min_char_width”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“max_char_width”:

字符的最大宽度(以像素为单位)。如果要分割任意宽度的文本,可以传递“auto”。注意“max_char_width”只引用字符。标点符号或分隔符的宽度不受“max_char_width”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“min_stroke_width”:

字符的最小笔画宽度(以像素为单位)。如果要在文本分割过程中自动估计最小笔画宽度,可以传递“auto”。注意,'min_stroke_width'仅指字符。标点符号或分隔符的笔画宽度不受“min_stroke_width”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“max_stroke_width”:

字符的最大笔画宽度(以像素为单位)。如果要在文本分割过程中自动估计最大笔画宽度,可以传递“auto”。注意“max_stroke_width”只引用字符。标点符号或分隔符的笔画宽度不受“max_stroke_width”的限制。

 

值列表:大于或等于1的整数或浮点值

 

默认值:“汽车”

 

“eliminate_border_blobs”:

如果触及图像域边界的区域应该被丢弃,则为true,否则为false。

 

值列表:“true”、“false”

 

默认值:“假”

 

“return_punctuation”:

如果标点符号(例如点或逗号)也应该返回,则为“true”。如果不应该返回标点,则使用“false”。

 

值列表:“true”、“false”

 

默认值:“真正的”

 

“return_separators”:

如果分隔符(如减号或等号)也应该返回,则为true。如果不应该返回分隔符,则为“false”。

 

值列表:“true”、“false”

 

默认值:“真正的”

 

“add_fragments”:

如果片段(如“i”上的点)被添加到分段字符中,则为“true”,否则为“false”。请注意,这可能会导致向分段字符添加噪声。

 

值列表:“true”、“false”

 

默认值:“真正的”

“text_line_structure”:

为了简化对分段文本中特定结构(例如日期或序列号)的搜索,可以定义文本行结构。对于每个文本行,计算字符之间的距离,并根据这些距离将文本行划分为文本块。短字符,如'。'、'_'和'-'在此过程中被忽略,并作为空格处理。此外,还可以定义特定于用户的分隔符,这些分隔符也被忽略。有关详细信息,请参见'text_line_separator '的描述。然后测试用户定义的任何文本行结构是否符合结果文本块。

 

例如,如果要查找的文本是一个包含月、日和年的两个字符的日期,那么结构将是' 2,2,2 '。如果年份可能由两个或四个字符组成,那么结构将是' 2,2,2 -4',表示最后一个字符块由两到四个字符组成。通过在参数名后面附加索引,可以提供多个匹配的结构,例如。“text_line_structure_0”、“text_line_structure_1”。如果'text_line_structure'被设置为空字符串' ',则要查找的文本可能具有任何结构。

 

请注意,所找到的每个文本行结构都保存为文本结果中的唯一文本行。因此,当调用get_text_object时,“line”引用一个有效的文本行结构。如果返回包含文本行结构的整个文本行,则可以相应地设置'return_whole_line'。

 

默认值:' '

 

“text_line_separators”:

包含在查找文本行结构过程中要忽略的字符列表的字符串,有关详细信息,请参见“text_line_structure”。请注意,用户特定的分隔符需要在使用的OCR分类器中是有效的字符。例如,如果要忽略':'和'\',则应该传递':\\'。请注意,'\'转义任何特殊符号,将其作为文字处理,因此需要传递'\\'来使用'\'作为分隔符。

 

值列表:' /',':',':\\',' \\/:',…

 

默认值:' '

 

“return_whole_line”:

如果只返回分段的文本行结构作为文本行,则为“false”。如果每个包含文本行结构的文本行都以文本行形式返回,则为“true”。

 

值列表:“true”、“false”

 

默认值:“假”

 

“mlp_classifier”:

find_text中用于文本分割的基于mlp的OCR分类器。在创建文本模型时设置初始分类器。有关所需OCR分类器的更多信息,请参见create_text_model_reader。

 

manual模式就不介绍了。。。

 

xxx

 

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值