Halcon OCR字符识别

create_text_model_reader创建一个文本模型描述要用于分割的文本find_text.

的parameter value文本分段方法的值为*'自动'* 和*'手动'*.

通常,参数模式应设置为*'自动'* 因为这种模式更稳定,需要更少 配置工作量。请注意,在这种情况下,还有一个 OCR 分类器 必须传入OCRClassifierMLP.仅当 以下限制适用,模式必须设置为*'手动'*:

  • 需要对点阵进行分割。

  • 文本的分段,其中 极性是必需的。例如,由于反射,雕刻的文本经常 具有很强的局部差异。

  • 没有合适的基于 MLP 的 OCR 分类器可用(见下文)。

如果模式 = '自动' ,find_text能够提取任意大小的文本。可以限制 搜索到具有特定属性的字符,请参阅set_text_model_param了解详情。 此外,必须传入 OCR 分类器OCRClassifierMLP. 此 OCR 分类器必须基于多层感知器 (MLP)。此外 强烈建议使用提供拒绝的 OCR 分类器 类(请参阅set_rejection_params_ocr_class_mlp) 并接受过培训 使用正则化参数(请参阅set_regularization_params_ocr_class_mlp).合适的 OCR classifier 可以使用create_ocr_class_mlpread_ocr_class_mlp.也可以传递 包含已存储的 OCR 分类器路径的字符串 跟write_ocr_class_mlp.

在以下情况下启用文本分段模式 = '手动' , 文本模型的合理参数,包括预期的 字符高度和宽度,必须使用set_text_model_param.在这种情况下,OCRClassifierMLP被忽略。

文本模型可以使用set_text_model_paramget_text_model_param.

由于在调用create_text_model_reader在以下操作中, model 应由运算符显式释放clear_text_model如 一旦它不再使用。

cs 复制代码
read_image (Image, 'E:/项目/电容/Image_20240311160353328.bmp')
cs 复制代码
gen_rectangle1 (ROI_0, 967.743, 3347.29, 1342.24, 3829.91)
dev_get_window (WindowHandle)
reduce_domain (Image, ROI_0, ImageReduced)
text_line_orientation (ROI_0, ImageReduced, 30, rad(-30), rad(30), OrientationAngle)
rotate_image (ImageReduced, ImageRotate, deg(-OrientationAngle+rad(180)), 'constant')
cs 复制代码
gen_rectangle1 (ROI_0, 2438.7, 1691.79, 2582.98, 1856.02)
reduce_domain (ImageRotate, ROI_0, ImageReduced1)
crop_domain (ImageReduced1, ImagePart)
cs 复制代码
get_image_size (ImagePart, Width, Height)
emphasize (ImagePart, ImageEmphasize, 17, 17, 3)
threshold (ImageEmphasize, Region, 0, 120)
region_to_bin (Region, BinImage, 0, 255, Width, Height)
cs 复制代码
create_text_model_reader ('auto', 'Universal_0-9A-Z+_Rej.occ', TextModel)
set_text_model_param (TextModel, 'min_stroke_width',3)
set_text_model_param (TextModel, 'min_char_height',20)
find_text (BinImage, TextModel, TextResultID)
get_text_object (Characters, TextResultID, 'all_lines')
get_text_result (TextResultID, 'class', Classes)
cs 复制代码
area_center (Characters, Area, Row, Column)
query_font (WindowHandle, Font)
* Specify font name and size
FontWithSize := Font[0]+'-40'

set_font (WindowHandle, FontWithSize)
disp_message (WindowHandle, Classes, 'image', Row-30, Column , 'green', 'false')

例2:

read_ocr_class_mlp读取已 存储于write_ocr_class_mlp.由于训练了 OCR 分类器可以消耗比较长的时间,分类器是 通常在离线进程中训练,并写入具有write_ocr_class_mlp.在在线流程中,分类器 读取 并随后用于 classification 替换为read_ocr_class_mlpdo_ocr_single_class_mlpdo_ocr_multi_class_mlp.

do_ocr_multi_class_mlp计算每个 区域给出的字符字符和灰色 值图像使用 OCR 分类器OCR汉德尔和 返回和相应的 中类的置信度(概率)信心. 与do_ocr_single_class_mlp,do_ocr_multi_class_mlp可以对多个字符进行分类 一次调用,因此通常比使用do_ocr_single_class_mlp对单个字符进行分类。 然而do_ocr_multi_class_mlp只能返回最好的 class 的 class 的 intent 值。因为置信度可以被解释 作为概率(参见classify_class_mlpevaluate_class_mlp),因此很容易检查 一个角色是否被归类为不确定性太大, 这通常不是缺点,除非 类重叠如此之多,以至于在许多情况下,第二好的类 必须进行检查才能决定字符的类别。 在这些情况下,do_ocr_single_class_mlp应该使用。 调用do_ocr_multi_class_mlp,则分类器必须为 训练trainf_ocr_class_mlp.

cs 复制代码
read_image (Image12, 'E:/Halcon数据/测量程序/OCR识别/12.png')
cs 复制代码
dev_get_window (WindowHandle)
gen_rectangle1 (ROI_0, 140.933, 176.767, 286.107, 660.934)
reduce_domain (Image12, ROI_0, ImageReduced)
threshold (ImageReduced, Region, 0, 100)
connection (Region, ConnectedRegions)
read_ocr_class_mlp ('DotPrint_NoRej', OCRHandle)
do_ocr_multi_class_mlp (ConnectedRegions, Image12, OCRHandle, Class, Confidence)
smallest_rectangle1 (ConnectedRegions, Row11, Column1, Row2, Column21)
query_font (WindowHandle, Font)
FontWithSize := Font[0]+'-60'
set_font (WindowHandle, FontWithSize)
disp_message (WindowHandle, Class, 'image', Row2+50, Column1, 'green', 'false')
相关推荐
网易独家音乐人Mike Zhou1 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
小陈phd1 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Swift社区5 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Kent_J_Truman5 小时前
greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用
算法
IT 青年6 小时前
数据结构 (1)基本概念和术语
数据结构·算法
Dong雨6 小时前
力扣hot100-->栈/单调栈
算法·leetcode·职场和发展
如若1236 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
SoraLuna6 小时前
「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
开发语言·算法·macos·cangjie
liujjjiyun6 小时前
小R的随机播放顺序
数据结构·c++·算法
¥ 多多¥7 小时前
c++中mystring运算符重载
开发语言·c++·算法