HALCON OCR识别实战




简介:这一篇将训练,识别文字,将图片上的图案识别为字符串并存储


待处理图片:


1.ROI与预处理

 

视觉识别文字之前,需要首先使用一组文字来对神经网络进行训练,这里使用原图来划分ROI区域进行识别

 

训练时候为了减少数据过多的标注时间的消耗,只每个符号划分一个对应图案出来

 

 

 

在划分好后,做reduce_domain 得到的结果,在这一结果上使用threshold算子进行二值化即可


该部分的代码

#pre process
read_image (Ocrfind, 'C:/Users/xxxx/Desktop/halcon/class 2/ocrfind.bmp')
gen_rectangle1 (ROI_0, 502, 659.031, 772, 1142.79)
reduce_domain (Ocrfind, ROI_0, ImageReduced)
threshold (ImageReduced, Regions1, 0, 80)
erosion1(Regions1, Regions1, RegionErosion, 1)
connection (Regions1, ConnectedRegions)


2.标注与训练

在使用connection算子划分区域后,需要为区域打上标签,另外还需要调用count_obj算子来获取区域数量,用于之后循环的参数


 ClassNames1 := ['1','0','1','1','3','7','5','6','7','6','-','-','.','.']


区域的排序是从数字到符号,从左到右,第一排到最后一排


在调整参数准备妥当后,我们可以创建并且生成一个训练文件用于之后的训练,这里使用create_ocr_class_mlp算子和trainf_ocr_class_mlp算子

 

 

 

create_ocr_class_mlp算子需要自行进行修改的部分已经在图片中标注,分别是字符的宽度和高度,都有哪些字符,隐藏的MLP单元



示例代码:

create_ocr_class_mlp (100, 100, 'constant', 'default', ['0','1','2','3','4','5','6','7','8','9','.','-'], 80, 'none', 12, 42, OCRHandle)
trainf_ocr_class_mlp(OCRHandle, 'C:/Users/xxxx/Desktop/halcon/class 2 train/train_characters_ocr_manadj.trf', 200, 1, 0.01, Error, ErrorLog)

3.训练文件的修正

 

在完成训练文件生成后,可以在目录下找到该文件,打开HALCON主界面菜单栏的可视化一栏,选择工具-----OCR训练文件浏览器

 

在训练文件浏览器窗口,点击菜单栏文件----加载训练文件,打开刚才生成的训练文件

 

 

查看并对标签和图片进行修正,在完成修正后保存文件,用于后面创建和训练神经网络时候调用





4.验证


完成训练后,使用这一文件去识别训练过程中扣下来的文字




训练流程整体代码:

#pre process
read_image (Ocrfind, 'C:/Users/sinzo/Desktop/halcon/class 2/ocrfind.bmp')
gen_rectangle1 (ROI_0, 502, 659.031, 772, 1142.79)
reduce_domain (Ocrfind, ROI_0, ImageReduced)
threshold (ImageReduced, Regions1, 0, 80)
erosion1(Regions1, Regions1, RegionErosion, 1)
connection (Regions1, ConnectedRegions)

#get how many
count_obj (ConnectedRegions, Number)


 ClassNames1 := ['1','0','1','1','3','7','5','6','7','6','-','-','.','.']


#generator NN Model

create_ocr_class_mlp (100, 100, 'constant', 'default', ['0','1','2','3','4','5','6','7','8','9','.','-'], 80, 'none', 12, 42, OCRHandle)
trainf_ocr_class_mlp(OCRHandle, 'C:/Users/sinzo/Desktop/halcon/class 2 train/train_characters_ocr_manadj.trf', 200, 1, 0.01, Error, ErrorLog)

#ocr
ocrNumbers[Number] := 0
for index:= 1 to Number by 1
    select_obj (ConnectedRegions, testRegion, index)
    do_ocr_multi_class_mlp (testRegion, ImageReduced, OCRHandle, Class, Confidence)
    dev_clear_window()
    dev_display (testRegion)
    disp_message(200000, Class, 'window', 12, 12, 'red', 'true')
    ocrNumbers[index-1] := Class
    disp_message (200000, Class, 'window', 12, 12, 'black', 'true')
endfor
stop()








HALCON是一种计算机视觉库,提供了OCR(Optical Character Recognition,光学字符识别)功能。在HALCON中,OCR识别的基本流程包括采集图像、提取字符区域、读取字库句柄、进行识别、清除句柄等步骤。\[1\]HALCON提供了一组预先训练好的字体,可以用于识别各种领域的文本,包括文档、制药、工业产品甚至手写数字文本。此外,HALCON还包括了针对特定字体的预训练字体,以及基于卷积神经网络的通用字体。\[2\]在HALCON中,可以使用do_ocr_multi_class_mlp函数来读取多个字符,或者使用do_ocr_single_class_mlp函数来读取单个字符。同时,还可以使用do_ocr_word_mlp函数来进行单词的OCR识别。\[3\] #### 引用[.reference_title] - *1* [Halcon学习之OCR字符识别](https://blog.csdn.net/Mr_Four97/article/details/131161813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Halcon解决方案指南(18)OCR--字符识别](https://blog.csdn.net/IntegralforLove/article/details/83756956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值