Halcon OCR文字识别

1、OCR文字识别

FontFile := 'Universal_0-9_NoRej'
dev_update_window ('off')
read_image (bottle, 'bottle2')
get_image_size (bottle, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (bottle)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()* 1.创建一个用于文本识别的文本模型读取器
* 参数一:auto 表示使用自动模式选择字体
* 参数二:FontFile 是用于识别的字体文件路径
* 参数三:存储文本模型的变量
create_text_model_reader ('auto', FontFile, TextModel)* 2.设置模型参数  
* 参数二:min_stroke_width:最小笔画宽度,值为6
set_text_model_param (TextModel, 'min_stroke_width', 6)
* 简化对分段文本内容的特定结构进行提取(例如日期YY-MM-DD)   2 2 2表示文本的显示结构
set_text_model_param (TextModel, 'text_line_structure', '2 2 2')* 3.在图像中查找文本片段并输出到句柄
find_text (bottle, TextModel, TextResultID)* 4.从文本识别结果中获取所有字符信息,all_lines返回当前区域中的所有字符和线
get_text_object (Characters, TextResultID, 'all_lines')
* 5.在显示窗口中显示图像 和 识别出的字符信息。
dev_display (bottle)
dev_display (Characters)
stop ()
* 6.获取结果,转成class类型的字符
get_text_result (TextResultID, 'class', ResultValue)
area_center (Characters, Area, Row, Column)

在这里插入图片描述

2、训练分类器

read_image (Image, 'bottle2')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
* 设置字体样式和大小
set_display_font (WindowHandle, 25, 'mono', 'true', 'false')
* 二值化操作
threshold (Image, Region, 0, 90)* 对区域进行形状填充,输入最小面积和最大面积
* 参数一:要进行形状填充的输入区域。
* 参数二:用于存储填充后的区域的变量。
* 参数三:填充的准则,这里是根据区域的面积进行填充。
* 参数四:最小区域面积
* 参数五:指定的连接性,表示填充时考虑的相邻像素的连接性。
fill_up_shape (Region, RegionFillUp, 'area', 1, 5)
* 填充所有的孔洞
* fill_up (RegionFillUp, RegionFillUp1)*开运算
*先腐蚀后膨胀,可以有效的断开,减少像素。
*相当于把整体变暗
opening_circle (RegionFillUp, RegionOpening, 2.5)
fill_up (RegionOpening, RegionFillUp1)
*使用矩形进行开运算
opening_rectangle1 (RegionFillUp1, RegionOpening1, 1, 7)
*连通性
connection (RegionOpening1, ConnectedRegions)
*求交集 当前区域与开运算之后的区域
intersection (ConnectedRegions, RegionOpening, RegionIntersection)
*特征提取
select_shape (RegionIntersection, SelectedRegions, 'area', 'and', 300, 9999)sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column')
dev_display (Image)
dev_set_color ('green')
dev_set_line_width (2)
dev_set_shape ('rectangle1')
dev_set_draw ('margin')
dev_display (SortedRegions)*训练字体
TrainingNames:=['0','1','0','8','9','4']
*字体名称
FontName:='bottle'
TrainingFileName:=FontName+'.trf'
*排序
sort_region (SortedRegions, SortedRegions1, 'first_point', 'true', 'column')
*变换区域的形状
*rectangle1:平行于坐标轴的最大内接矩形
shape_trans (SortedRegions1, RegionTrans, 'rectangle1')
area_center (RegionTrans, Area, Row, Column)
*求平均的行坐标
MeanRow:=mean(Row)
*如果发现错误,则把当前.trf文件删除
dev_set_check ('~give_error')
delete_file (TrainingFileName)
for I := 0 to |TrainingNames|-1 by 1*选择对应的i区域,进行赋值select_obj (SortedRegions1, ObjectSelected, I+1)*追加文本append_ocr_trainf (ObjectSelected, Image, TrainingNames[I], TrainingFileName)disp_message (WindowHandle, TrainingNames[I], 'image', MeanRow-40, Column[I]-15, 'black', 'true')
endfor*sort排序[0,0,1,4,8,9],uniq删除重复[0,1,4,8,9]*
CharNames:=uniq(sort(TrainingNames))
*mlp训练器,
*参数1:WidthCharacter>>>输入被分割的字符缩放的指定宽度 默认是8  范围4~20
*参数2:HeightCharacter>>>输入被分割的字符缩放的指定高度  默认是10  范围4~20
*参数3:Interpolation>>> 插值算法,默认是不变
*参数4:Features>>>分类特征,默认是default
*参数5:Characters>>>设置要匹配的字符集合
*参数6:NumHidden>>>MLP隐藏单元数量
*参数7:Preprocessing>>>矢量特征转换,默认是none代表没有,normalization正常
*参数8:NumComponents>>>预处理参数,交换的要素的数量
*参数9:RandSeed>>>随机数生成器的种子值 用于使用随机值初始化 MLP
*参数10:OCRHandle>>>句柄
create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 10, 'none', 10, 42, OCRHandle)*训练mlp分类器
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
*写入字体文件
write_ocr_class_mlp (OCRHandle, FontName)*读取mlp分类器
*read_ocr_class_mlp (Error, OCRHandle1)
*清除句柄
clear_ocr_class_mlp (OCRHandle)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/276456.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Ubuntu虚拟机突然上不了网的问题

今天刚重新把Ubuntu虚拟机下回来准备大干一场,结果去吃饭回来虚拟机就上不去网了,具体体现为右上角没有网络的图标,下图是有网络的情况,废话不多说,直接给出解决方案:博客在此 我就是运行了这三行代码就成功…

抖音开放平台第三方开发,实现代小程序备案申请

大家好,我是小悟 抖音小程序备案整体流程总共分为五个环节:备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前,需要确保小程序基本信息已填写完成、小程序至少存在一个…

项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标 性能优化的终极目标是什么 性能优化的目标实际上是为了更好的用户体验: 一般我们认为用户体验是下面的公式: 用户体验 产品设计(非技术) 系统性能 ≈ 系统性能 快 那什么样的体验叫快呢…

通付盾Web3专题 | SharkTeam:2023年加密货币犯罪分析报告

2023年,Web3行业共经历了940多起大大小小的安全事件,同比2022年增长了超过50%,损失金额达到17.9亿美元。其中,第三季度发生的安全事件最多(360起),损失最大(7.4亿美元)&a…

19.ADC模数转换器知识点+AD单通道AD多通道应用程序示例

0. 江协科技/江科大-STM32标准库开发-各章节详细笔记-查阅传送门_江协科技stm32笔记-CSDN博客文章浏览阅读2.9k次,点赞44次,收藏128次。江协科技/江科大-STM32标准库开发-各章节详细笔记-传送门至各个章节笔记。基本上课程讲的每句都详细记录&#xff0c…

整型变量的原子操作

什么是原子操作 原子操作(Atomic Operation)是指不可中断的操作,即在多线程环境下,当一个线程在执行原子操作时,不会被其他线程的调度和中断所影响。这种操作在多线程编程中尤为重要,因为它能保证操作的原…

H5 流光分割个人主页源码

源码名称:流光分割个人主页源码 源码介绍:一款流光分割特效个人主页源码,源码带大量跳转个人联系方式按钮和朋友按钮。同时带有个人介绍。 需求环境:H5 下载地址: https://www.changyouzuhao.cn/10241.html

稀碎从零算法笔记Day15-LeetCode:判断子序列

跑样例的时候LC炸了,以为今天回断更 题型:字符串、双指针 链接:392. 判断子序列 - 力扣(LeetCode) 来源:LeetCode 题目描述(此题建议结合样例理解) 给定字符串 s 和 t &#xf…

妇女节专访|勇敢踏入未知领域,她的 Web3 奇妙之旅

Web3 的出现席卷着数字世界的剧烈变革,让每个人与互联网和数字资产互动的方式产生了深刻的变化。Web3 所强调的去中心化特征,使其成为人们对理想未来世界的一个缩影。而作为一个以技术为核心的新兴领域,Web3 也难以避免传统认知中男性占主导地…

Unity 让角色动起来(动画控制器)

下载素材: 导入后,找到预制体和动画。 新建动画控制器,拖动到预制体的新版动画组件上。 建立动画关系 创建脚本,挂载到预制体上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public c…

C++面试100问!(三)

前言 本次专题旨在回顾C的一些基础,方便实时总结。 C源文件从文本到可执行文件经历的过程? 预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生…

基于Java+SpringBoot+vue实现图书借阅和销售商城一体化系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 🍅 作者主页 央顺技术团队 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 🍅 欢迎点赞 👍 收藏 ⭐留…

【阿里云系列】-部署ACK集群的POD应用日志如何集成到日志服务(SLS)中

介绍 我们在实际部署应用到阿里云的ACK集群后,由于后期应用服务的持续维护诉求可能需要跟踪排查问题,此时就要具备将应用的历史日志存档便于后期排查问题 处理方式 为了解决以上的普遍需求,需要将ACK中的应用日志采集到SLS的Logstore中,然…

unity显示当前时间

1建立文本组件和一个空对象 2创建一个脚本并复制下面代码 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine;public class showtime: MonoBehaviour {public TextMeshProUGUI time;private void Update(){string currentTime Sy…

VMware workstation的安装

VMware workstation安装: 1.双击VMware-workstation-full-9.0.0-812388.exe 2.点击next进行安装 选择安装方式 Typical:典型安装 Custom:自定义安装 选择程序安装位置 点击change选择程序安装位置,然后点击next 选择是否自动…

Linux下的多线程编程:原理、工具及应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

【项目设计】基于Httplib和Mysql的视频播放

项目源码(绝对可以直接运行) 一、项目介绍 1. 对视频播放系统的认识 搭建视频共享播放服务器,可以让所有人通过浏览器访问服务器,实现视频的上传查看,以及管理并播放的功能。主要是完成服务器端的程序业务功能的实现…

vue 引用百度地图

address.vue <template><div><!-- 地图 --><el-drawer:visible.sync"type1"direction"rtl"size"50%"append-to-bodyclass"map-drawer":before-close"beforeClose"><div style"width: 100%…

永热爱 敢向前 | Paraverse平行云的2023 年终总结

永热爱&#xff0c;敢向前 值此新年&#xff0c;回顾2023&#xff0c;仅以此句&#xff0c;献给所有XR产业信仰者 2023 年&#xff0c;是XR产业技术和场景承上启下的关键之年 在这场波澜壮阔的技术潮中 「Paraverse平行云」踏浪前行 已是第八个年头&#xff0c;让我们一起…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

摘要&#xff1a;开发远距离停车位检测系统对于提高停车效率具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个远距离停车位检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不…