Halcon OCR检测 免训练版

news2024/11/13 10:38:42

一.前言:

目前新版的Halcon已经具备了DeepOcr的功能可以涵盖大部分的识别场景,缺点是有些特殊的应用场景依然需要大量的图片训练,而且Halcon22之前的版本DeepOCR是不支持训练的,我们都知道传统的OCR项目是通过Blob分析,把需要检测的字符位置在图像中割出来。然后利用MLP,SVM,GMM等等机器学习的方式训练OCR识别模型。其实对于标准印刷字体还有点阵字体,工业打印字体等等,Halcon预训练的现成的模型,可以拿来直接做字符识别,用起来也非常的方便。他的好处是应用速度很快,并且不需要做Blob分析图像分割,可以直接传图进行读取。目前Halcon主要是针对多层干感知机MLP和卷积神经网络CNN训练的一些模型。

在这里插入图片描述

在这里插入图片描述

例如可以利用算子read_ocr_class_mlp (Operator)读取MLP模型。MLP的模型名称如下:

Suggested values: ‘Document_0-9_NoRej.omc’, ‘Document_0-9_Rej.omc’, ‘Document_0-9A-Z_NoRej.omc’, ‘Document_0-9A-Z_Rej.omc’, ‘Document_A-Z+_NoRej.omc’, ‘Document_A-Z+_Rej.omc’, ‘Document_NoRej.omc’, ‘Document_Rej.omc’, ‘DotPrint_0-9_NoRej.omc’, ‘DotPrint_0-9_Rej.omc’, ‘DotPrint_0-9+_NoRej.omc’, ‘DotPrint_0-9+_Rej.omc’, ‘DotPrint_0-9A-Z_NoRej.omc’, ‘DotPrint_0-9A-Z_Rej.omc’, ‘DotPrint_A-Z+_NoRej.omc’, ‘DotPrint_A-Z+_Rej.omc’, ‘DotPrint_NoRej.omc’, ‘DotPrint_Rej.omc’, ‘HandWritten_0-9_NoRej.omc’, ‘HandWritten_0-9_Rej.omc’, ‘Industrial_0-9_NoRej.omc’, ‘Industrial_0-9_Rej.omc’, ‘Industrial_0-9+_NoRej.omc’, ‘Industrial_0-9+_Rej.omc’, ‘Industrial_0-9A-Z_NoRej.omc’, ‘Industrial_0-9A-Z_Rej.omc’, ‘Industrial_A-Z+_NoRej.omc’, ‘Industrial_A-Z+_Rej.omc’, ‘Industrial_NoRej.omc’, ‘Industrial_Rej.omc’, ‘OCRA_0-9_NoRej.omc’, ‘OCRA_0-9_Rej.omc’, ‘OCRA_0-9A-Z_NoRej.omc’, ‘OCRA_0-9A-Z_Rej.omc’, ‘OCRA_A-Z+_NoRej.omc’, ‘OCRA_A-Z+_Rej.omc’, ‘OCRA_NoRej.omc’, ‘OCRA_Rej.omc’, ‘OCRB_0-9_NoRej.omc’, ‘OCRB_0-9_Rej.omc’, ‘OCRB_0-9A-Z_NoRej.omc’, ‘OCRB_0-9A-Z_Rej.omc’, ‘OCRB_A-Z+_NoRej.omc’, ‘OCRB_A-Z+_Rej.omc’, ‘OCRB_NoRej.omc’, ‘OCRB_passport_NoRej.omc’, ‘OCRB_passport_Rej.omc’, ‘OCRB_Rej.omc’, ‘Pharma_0-9_NoRej.omc’, ‘Pharma_0-9_Rej.omc’, ‘Pharma_0-9+_NoRej.omc’, ‘Pharma_0-9+_Rej.omc’, ‘Pharma_0-9A-Z_NoRej.omc’, ‘Pharma_0-9A-Z_Rej.omc’, ‘Pharma_NoRej.omc’, ‘Pharma_Rej.omc’, ‘SEMI_NoRej.omc’, ‘SEMI_Rej.omc’

同时可以利用算子read_ocr_class_cnn (Operator)读取CNN模型,CNN的模型名称如下:

‘Universal_NoRej.occ’, ‘Universal_Rej.occ’, ‘Universal_0-9_NoRej.occ’, ‘Universal_0-9_Rej.occ’, ‘Universal_0-9+_NoRej.occ’, ‘Universal_0-9+_Rej.occ’, ‘Universal_0-9A-Z_NoRej.occ’, ‘Universal_0-9A-Z_Rej.occ’, ‘Universal_0-9A-Z+_NoRej.occ’, ‘Universal_0-9A-Z+_Rej.occ’, ‘Universal_A-Z+_NoRej.occ’, ‘Universal_A-Z+_Rej.occ’

模型读取完成后,利用算子create_text_model_reader (Operator),把刚才读取的模型传递给该算子,可以输出一个字符识别的句柄。然后利用该句柄和算子find_text (Operator)就可以做字符识别了。

二、上干货,OCR识别源码解析:

dev_update_off ()

  • Acquire the image
    read_image (Image, ‘numbers_scale’)
    get_image_pointer1 (Image, Pointer, Type, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width, Height, ‘black’, WindowID)
    dev_set_part (0, 0, Height - 1, Width - 1)
    dev_set_line_width (2)
    dev_set_color (‘yellow’)
    dev_set_draw (‘margin’)
    dev_display (Image)
    set_display_font (WindowID, 12, ‘mono’, ‘true’, ‘false’)
    stop ()

*读取预训练模型
read_ocr_class_mlp (‘Document_0-9_NoRej.omc’, OCRHandle)

  • 根据读取到的模型句柄创建字符识别模型
    create_text_model_reader (‘auto’, OCRHandle, TextModel)

  • 自动分割图像和OCR识别
    find_text (Image, TextModel, TextResultID)

  • 获取识别到的字符区域
    get_text_object (Characters, TextResultID, ‘all_lines’)
    dev_display (Image)
    dev_display (Characters)
    stop ()

  • 获取识别到的字符
    get_text_result (TextResultID, ‘class’, Classes)
    count_obj (Characters, Number)
    for Index := 1 to Number by 1
    dev_set_color (‘yellow’)
    select_obj (Characters, SingleChar, Index)
    dev_set_color (‘white’)
    Class := Classes[Index - 1]
    smallest_rectangle1 (SingleChar, Row1, Column1, Row2, Column2)
    set_tposition (WindowID, Row1 - 17, (Column2 + Column1) * 0.5 - 5)
    write_string (WindowID, Class[0])
    endfor
    stop ()

  • Free memory
    clear_text_result (TextResultID)
    clear_text_model (TextModel)

在这里插入图片描述

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

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

相关文章

Linux中的进程入门

冯诺依曼体系结构 操作系统(Operator System) 进程控制块(PCB) struct task_struct{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next; }; struct task_struct 内核结构体——>创建内核结构体对象(task_struct)…

【vue element-ui】表单连锁验证,el-form validate函数失效问题

实现效果:连锁表单验证,在LED版本号选择为升级版LED时候,标题名称不超过8 实现代码: <el-form:model="configuration"ref="form":rules="rule"size="small"label-width="130px"v-if="isture == 1"><…

Docker笔记-Docker Dockerfile

Docker笔记-Docker Dockerfile Dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了一条条构建镜像所需的指令和说明。 这里讲解如何运行 Dockerfile 文件来定制一个镜像。 DockerFile构建过程解析&#xff1a; 1、每条保留字指令都必须为大写字母且后面要…

基于SpringBoot的图书进销存管理系统【附源码】

基于SpringBoot的图书进销存管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 用户信息管理 5.2 图书类型管理 5.3 商品…

【雪球-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

JavaWeb 实验一

实验一 环境配置和Web工程的创建 目的&#xff1a; 掌握Java Web编程环境的配置创建简单的Web工程&#xff0c;并了解Web工程下各目录的作用掌握部署、运行Web工程的流程 实验过程&#xff1a; 一、完成如下要求。 安装并设置JDK 1.8、Tomcat 9.0&#xff08;tomcat和jdk版…

如何才能开发出最适合自己公司的网站?

开发最适合自己公司的网站是一个综合性的项目&#xff0c;需要从多个角度进行考虑和规划。以下是一些关键步骤和建议&#xff1a; 一、明确目标与定位 确定网站目标&#xff1a;明确网站的核心目的&#xff0c;如提升品牌知名度、展示公司产品或服务、促进销售、提供客户服务…

Zabbix_5.0 构建企业级监控告警平台----图形监控

目录 Apache监控示例&#xff08;图形监控&#xff09; 创建主机群组&#xff08;192.xx.xx.10&#xff09; 创建主机&#xff08;192.xx.xx.10&#xff09; 创建图形 查看是否添加成功 Apache监控示例&#xff08;图形监控&#xff09; 创建主机群组&#xff08;192.xx.…

数字化时代,住宅代理是怎样为企业赋能的?

在数字化时代&#xff0c;企业的发展也面临着转型&#xff0c;一方面是未知的挑战&#xff0c;一方面是不可多得的机遇。如何在全球市场中保持竞争力是企业要认真思考的问题。如果说主动寻找出路太过冒险&#xff0c;那不妨试试内省式的自我管理革新。代理服务器是一种中介服务…

LIN总线CAPL函数—— 设置与测量从节点的波特率(linSetRespBaudrate)

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

springsecurity+jwt实现前后端分离认证授权

文章目录 1.简介2.快速入门3.认证3.1登录校验流程3.2原理初探3.3认证详流程详解3.4 分析UsernamePasswordAuthenticationFilter 4.案例实战4.1 思路分析4.2准备工作4.3实战1.数据库校验用户2.核心代码1.创建UserDetailsService实现类2.创建UserDetails实现类3.密码加密存储模式…

基于Python的自然语言处理系列(13):TorchText + GRU + 上下文向量 + Teacher Forcing

在上一篇文章中&#xff0c;我们使用了LSTM来构建一个序列到序列模型&#xff08;seq2seq&#xff09;。虽然LSTM表现良好&#xff0c;但我们想看看能否通过使用门控循环单元&#xff08;GRU&#xff09;并改进信息压缩的方式来提升模型性能。GRU和LSTM在很多场景下表现相似&am…

Windows Server2016多用户登录破解

使用场景 很多时候&#xff0c;公司开发和测试运维会同时登录同一台windows服务器进行查询、更新、维护等操作&#xff0c;本文就来介绍一下Windows2016配置多人远程桌面登录实现&#xff0c;感兴趣的可以了解一下。 操作流程 &#xff08;1&#xff09;首先桌面需要安装远程…

etcd之etcd简介和安装(一)

1、etcd简介 1.1 etcd简介 etcd 是开源的、高可用的分布式key-value存储系统&#xff0c;可用于配置共享和服务的注册和发现&#xff0c;它专注于&#xff1a; 简单&#xff1a;定义清晰、面向用户的API&#xff08;gRPC&#xff09; 安全&#xff1a;可选的客户端TLS证书自…

uni-app功能 1. 实现点击置顶,滚动吸顶2.swiper一个轮播显示一个半内容且实现无缝滚动3.穿透修改uni-ui的样式

uni-app项目中遇到的功能 文章目录 uni-app项目中遇到的功能一、实现点击置顶&#xff0c;滚动吸顶、1.1、scroll-view设置不生效的原因和解决办法1.2 功能代码 二、swiper一个轮播显示一个半内容且实现无缝滚动三、穿透修改uni-ui的样式 一、实现点击置顶&#xff0c;滚动吸顶…

PMP--二模--解题--1-10

文章目录 4.整合管理--商业文件--商业论证&#xff08;是否值得所需投资、高管们决策的依据&#xff09;反映了&#xff1a;1、 [单选] 收到新项目的客户请求之后&#xff0c;项目经理首先应该做什么&#xff1f; 14.敏捷--角色--产品负责人PO–职责–1.创建待办列表并排序;2.确…

EmguCV学习笔记 VB.Net 12.3 OCR

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

MATLAB给一段数据加宽频噪声的方法(随机噪声+带通滤波器)

文章目录 引言方法概述完整代码:结果分析结论参考文献引言 在信号处理领域,添加噪声是模拟实际环境中信号传输时常见的操作。宽频噪声可以用于测试系统的鲁棒性和信号处理算法的有效性。本文将介绍如何使用 M A T L A B MATLAB MATLAB给一段数据添加宽频噪声,具体方法是结合…

漏洞挖掘 | Selenium Grid 中的 SSRF

Selenium 网格框架上的基本服务器端请求伪造 最近&#xff0c;我正在阅读漏洞文章看到Peter Jaric写的一篇 Selenium Grid 文章&#xff1b;他解释了 Selenium Grid 框架上缺乏身份验证和安全措施强化的问题。 在网上进行了更多搜索&#xff0c;我发现 Selenium Grid 开箱即用…

古诗词四首鉴赏

1、出自蓟北门行 唐李白 虏阵横北荒&#xff0c;胡星曜精芒。 羽书速惊电&#xff0c;烽火昼连光。 虎竹救边急&#xff0c;戎车森已行。 明主不安席&#xff0c;按剑心飞扬。 推毂出猛将&#xff0c;连旗登战场。 兵威冲绝漠&#xff0c;杀气凌穹苍。…