Halcon OCR文字识别

news2025/1/18 6:53:12

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.coloradmin.cn/o/1518844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

信息检索(十一):Nonparametric Decoding for Generative Retrieval

Nonparametric Decoding for Generative Retrieval 摘要1. 引言2. 相关工作3. 非参数解码3.1 关键优势3.2 Base Np3.3 异步 Np3.4 对比 Np3.5 聚类 4. 实验设置4.1 基线4.2 数据集和评价指标4.3 构建CE 的细节 5. 实验结果5.1 普通解码 vs Np 解码5.2 非参数解码的优点5.3 什么…

Win11安装Plsql140报错2503

一、安装异常 二、解决办法 出现上述问题,主要是因为msi包安装的权限问题,使用管理员权限安装即解决 。cmd控制台以管理员身份打开WINR)->(SHIFTCTRLRNTER),进入到msi安装包目录下,以管理员身份安装即可&#xff1…

保姆级OpenSSL下载及安装教程

下载地址下载步骤安装步骤环境变量配置查看是否安装成功下载地址 官网链接:(https://slproweb.com/products/Win32OpenSSL.html ) 点击跳转 下载步骤 以下步骤截图,以当前官网界面为标准,后有变动请提示博主修改。 点击链接跳转后界面为 往下滚动找到安装包下载按钮…

医疗设备控费系统防止私收、漏收、人情费

加19339904493(康) 医院完成信息化建设,不仅是一次技术性人深过信息化技术,医院能够更好地管理病患信息,提高诊断的准确性和效率,同时优化医疗资源的配置,降低医疗成本。在信息化的推动下&#…

基于亚马逊云EC2+Docker搭建nextcloud私有化云盘

亚马逊云科技EC2云服务器(Elastic Compute Cloud)是亚马逊云科技AWS(Amazon Web Services)提供的一种云计算服务。EC2代表弹性计算云,它允许用户租用虚拟计算资源,包括CPU、内存、存储和网络带宽&#xff0…

创建阿里云MySQL数据库详细流程,云数据库账号密码创建和连接教程

阿里云数据库怎么使用?阿里云服务器网aliyunfuwuqi.com整理阿里云数据库从购买到使用全流程,阿里云支持MySQL、SQL Server、PostgreSQL和MariaDB等数据库引擎,阿里云数据库具有高可用、高容灾特性,阿里云提供数据库备份、恢复、迁…

感谢Cognition公司AI程序员Devin为人类程序员提供新工作:AI驯兽师AI鼓励师AI接锅侠

讲动人的故事,写懂人的代码 初创公司Cognition最近推出的AI程序员Devin,只会给人类程序员增加3类新工作。 最近,初创公司Cognition告诉大家一个新闻:他们研发了个AI程序员,名叫Devin。 Devin能干这些事: …

【面试精讲】String是如何实现的?String源码分析

【面试精讲】String是如何实现的?String源码分析 目录 一、String实现机制 二、String不可变性(使用final修饰) 三、String 和 StringBuilder、StringBuffer 的区别 四、和equals的区别 五、String创建对象与JVM辨析 六、String源码解…

vos3000外呼系统非标准的11位手机号码开启国内业务和黑白名单时需设置忽略前缀

通过软交换管理-补充设置-系统参数SS_NON_STANDARD_PREFIX中填写999,用来忽略这些非标准的手机前缀,从而实现功能 还可以按照以下步骤进行设置,系统问题欢迎微博主一起交流学习: 登录VOS3000管理界面: 使用管理员账号登录VOS3000管…

实现基本的登录功能

一、登录功能的前端处理过程 1、导入项目所需的图片和CSS等静态文件 参考代码存放client节点的/opt/code目录下 执行如下命令: [rootclient ~]# cp -r /opt/code/kongguan_web/src/assets/* /root/kongguan_web/src/assets/ 将参考代码中的css、icon、images等文…

49、C++/友元、常成员函数和常对象、运算符重载学习20240314

一、封装类 用其成员函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;加法&#xff09;&#xff0c;并封装一个全局函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;减法&#xff09;。 代码&#xff1a; #include <iostream…

ITK Region 解析

ITK 官方文档里面关于region的讲解&#xff1a;In summary:* LargestPossibleRegion is the total size of the image* BufferedRegion is the portion of the image that iscurrently loaded in memory * RequestedRegion is the portion that the pipelinerequest from a fil…

扭蛋机小程序:互联网发展下的巨大收益潜力

随着人们生活水平的提高&#xff0c;对娱乐消费方式的需求逐渐趋于多样化&#xff0c;扭蛋机进入到了大众的目光中&#xff0c;成为了一个全年龄层都适用的消费模式。扭蛋商品通常是以漫画、动漫、游戏为主题设计&#xff0c;有强大的粉丝基础&#xff0c;市场需求持续增长&…

java数据结构与算法刷题-----LeetCode46. 全排列

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力回溯2. 分区法回溯 1. 暴力回溯 解题思路&#xff1a;时…

精酿啤酒:煮沸、发酵与成熟的过程解析

在啤酒酿造过程中&#xff0c;煮沸、发酵与成熟是重要的环节&#xff0c;它们对啤酒的口感、香气和品质具有决定性的影响。下面将详细解析Fendi Club啤酒在煮沸、发酵与成熟过程中的关键步骤和与众不同之处。 煮沸是啤酒酿造过程中的一个重要环节。在这一步骤中&#xff0c;麦汁…

mfc140u.dll丢失的解决方法,解决mfc140u.dll问题,让程序运行畅通无阻

如果你的电脑丢失了mfc140u.dll文件&#xff0c;那么可能是电脑中的mfc140u.dll文件发成了变化&#xff0c;倒是点找不到mfc140u.dll文件&#xff0c;并运行mfc140u.dll&#xff0c;那么有什么办法可以解mfc140u.dll丢失的问题呢&#xff1f;接了下来就带大脚先了解一下mfc140u…

linux_aarch64_qt环境搭建

平台环境&#xff1a; ubuntu 16.04&#xff1a; gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) aarch64 gnu gcc版本&#xff1a; gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz Qt交叉编译版本: qt-everywhere-src-5.12.9.tar.xz 一、aarch64编…

Yolo系列算法-理论部分-YOLOv5

0. 写在前面 YOLO系列博客&#xff0c;紧接上一篇Yolo系列算法-理论部分-YOLOv4-CSDN博客 1. YOLOv5-美而全的产品 YOLOv5的诞生&#xff0c;直接将目标检测算法向终局推进&#xff0c;Ultralytics团队在COCO数据集上预训练的目标检测架构和模型直接开源&#xff0c;其中包含了…

springboot同时接收json数据和 MultipartFile

首先测试接口发送方式。。。。。注意发送结构&#xff01; 后端接收RequestPart SaCheckPermission("system:records:add")Log(title "【用药纪录】", businessType BusinessType.INSERT)RepeatSubmit()PostMapping()public R<Void> add( RequestP…