基于Halcon学习的OCR识别【二】

*加载图片并对图片进行预处理(直方图均衡(增加图片亮度),线性变换,阈值处理
*【目的:把汉字区域选择出来,文字区域与其他干扰区域不连接】
dev_close_window ()
read_image (Image, 'C:/Users/gwd/Desktop/驱油用表面活性剂的......png')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
* 灰度化
rgb1_to_gray (Image, GrayImage)
*画出一个矩形把需要识别的文字抠图
gen_rectangle1 (ROI_0, 210, 125, 326, 405)
reduce_domain (GrayImage, ROI_0, ImageReduced)
*进行二值化, 阈值操作初步筛选
threshold (ImageReduced, Regions, 92, 252)
*进行闭运算【形态学】,【目的:把汉字区域选择出来,文字区域与其他干扰区域不连接】
closing_rectangle1 (Regions, RegionClosing1, 1.5, 2.5)
connection (RegionClosing1, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row','column'], 'and', [0,220.56,142.06], [1000,311.01,500])

*在选择的文字区域上与阈值化后的区域有交集的部分形成显得更精确的文字区域
*【把文字区域膨胀后多余的部分删除】并进行排序
intersection (SelectedRegions, Regions, RegionIntersection)
sort_region (RegionIntersection, SortedRegions, 'character', 'true', 'row')
dev_display (SortedRegions)
count_obj (SortedRegions, Number)

*在阈值化后的区域上把与选择的文字区域有交集的部分选择出来(所有文字形成一个区域),
*形成区域的外接平行矩形并从原图中截取出来,
*最后再进行颜色反转把白色文字转成黑色文字
**************
intersection (Regions, SelectedRegions, RegionIntersection1)
shape_trans (RegionIntersection1, RegionTrans, 'rectangle1')
reduce_domain (Image, RegionTrans, ImageReduced1)
invert_image (ImageReduced1, ImageInvert)

*定义训练文字变量和训练文件
words:=['驱','油','用','表','面','活','性','剂','的','界','面','化','学','与','界','面','流','变','学']
TrainFile :='C:/Users/gwd/Desktop/quyouyong.trf'

*把训练文字变量区域与训练文字变量关联起来(通过区域找到相应图片中的文字把图片与文字变量联系起来)
*并把联系存放在训练文件中【逐字添加】
for i:=1 to Number by 1
    select_obj (SortedRegions, ObjectSelected, i)
    append_ocr_trainf (ObjectSelected, ImageInvert, words[i-1],TrainFile)
    *将单个字符区域、单个字符图像和对应的字符文本联系写入TrainingFile 文件
    dev_display (ObjectSelected)
endfor
* 读取训练文件
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
* 创建模型
create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 80, 'none', 10, 42, OCRHandle)
* 训练模型
trainf_ocr_class_mlp (OCRHandle, TrainFile, 200, 1, 0.01, Error, ErrorLog)
*识别
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
* 显示
smallest_rectangle1 (ObjectSelected, Row1, Column1, Row2, Column2)
for i:=1 to Number by 1
    disp_message (WindowHandle, Class, 'Image', 0, 0, 'red', 'true')
    stop ()
endfor

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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值