EmguCV学习笔记 VB.Net 12.3 OCR

news2024/11/13 9:28:21

  版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。

教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客

教程C#版本请访问:EmguCV学习笔记 C# 目录-CSDN博客

笔者的博客网址:https://blog.csdn.net/uruseibest

教程配套文件及相关说明以及如何获得pdf教程和代码,请移步:EmguCV学习笔记

学习VB.Net知识,请移步: vb.net 教程 目录_vb中如何用datagridview-CSDN博客

 学习C#知识,请移步:C# 教程 目录_c#教程目录-CSDN博客

12.3 OCR       

EmguCV中使用Tesseract类         进行文字识别。

Tesseract类的构造函数:

Public Sub New (

         dataPath As String,

         language As String,

         mode As OcrEngineMode,

         Optional whiteList As String = Nothing,

         Optional enforceLocale As Boolean = true

)

参数说明:

  1. dataPath:存放语言识别模型文件的目录,该目录必须是tessdata。
  2. language:要用来识别的语言,例如简体中文是chi_sim.traineddata,英文是eng.traineddata。如果需要识别的内容包含多种语言,那么这里需要使用加号连接,如:chi_sim+eng,将加载简体中文和英语。需要注意的是,加载额外的语言将影响速度和准确性。
  3. mode:OCR引擎模式。这是一个OcrEngineMode枚举,它包含四个成员:TesseractOnly:速度最快;LstmOnly:精度最好,但是速度慢;TesseractLstmCombined:速度和精度比较平衡;Default:自动选择上述三种引擎。
  4. whiteList:用于指定OCR的白名单。例如,指定“1234567890”仅识别数字。请注意,白名单目前只适用于OcrEngineModel.OEM_TESSERACT_only
  5. enforceLocale:指定是否强制使用特定的区域设置。当设置为 True 时,Tesseract将强制使用特定的区域设置,这意味着它将使用与指定区域设置相关的语言模型和字典进行文本识别。例如,如果您希望在美国使用 Tesseract,可以将 enforceLocale 参数设置为 True,并将区域设置设置为 "en_US"。这样,Tesseract 将使用与美国英语相关的语言模型和字典进行文本识别,从而提高识别准确性。相反,如果将 enforceLocale 参数设置为 False,Tesseract 将不会强制使用特定的区域设置,而是使用默认的区域设置进行文本识别。

具体操作步骤:

经过构造函数后,通过SetImage方法传入需要OCR的图像,Recognize方法识别图像,但是该方法不会直接返回结果,而是通过GetUTF8Text方法获得识别出的字符串,或者通过GetCharacters方法获得Tesseract.Character结构数组,Tesseract.Character结构包含了识别出的字符串和字符串所在的区域坐标。

【代码位置:frmChapter12】Button4_Click

    'OCR识别

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        '使用中文

        Dim ocr As New Tesseract("C:\learnEmgucv\tessdata", "chi_sim", OcrEngineMode.LstmOnly)

        '如果中英文都要使用,那么使用加号连接。但不要超过2个语言。

        'Dim ocr As New Tesseract("C:\learnEmgucv\tessdata", "chi_sim+eng", OcrEngineMode.LstmOnly)

        Dim m As New Mat("C:\learnEmgucv\ocr2.jpg", ImreadModes.Color)

        ImageBox1.Image = m

        '设置需要识别文字的图像

        ocr.SetImage(m)

        '识别

        ocr.Recognize()

        '获得识别结果

        Dim textout As String

        textout = ocr.GetUTF8Text

        Console.WriteLine(textout)

        '标记识别区域

        Dim charout() As Tesseract.Character

        charout = ocr.GetCharacters

        For i As Integer = 0 To charout.Length - 1

            CvInvoke.Rectangle(m, charout(i).Region, New MCvScalar(0, 0, 255), 1)

        Next

        ImageBox2.Image = m

End Sub

输出结果如下图所示:

 

图12-4 OCR获得图像中的文字

需要注意的是,识别结果和传入的图像质量有关系,请在识别前做好图像处理。

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

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

相关文章

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

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

漏洞挖掘 | Selenium Grid 中的 SSRF

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

古诗词四首鉴赏

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

打开C嘎嘎的大门:你好,C嘎嘎!(1)

前言: 小编在学习完一些数据结构以后,终于,我还是来到了这一步,开始学习我小学就听说过的C,至于为什么标题写的C嘎嘎,因为小编觉着这样好念而且有意思,今天是小编学习C嘎嘎的第一天,…

零信任安全架构--最小权限原则

最小权限原则(Principle of Least Privilege, PoLP)是零信任安全架构中的核心理念之一,旨在确保用户、设备、应用等系统实体只拥有完成其任务所必需的最低权限,避免不必要的权限扩展,从而降低安全风险。 1. 概念 最小…

LabVIEW闪退

LabVIEW闪退或无法启动可能由多个原因引起,特别是在使用了一段时间后突然发生的问题。重启电脑后 LabVIEW 和所有 NI 软件都无法打开,甚至在卸载和重装时也没有反应。这种情况通常与系统环境、软件冲突或 NI 软件组件的损坏有关。 1. 检查系统和软件冲突…

Arthas dashboard(当前系统的实时数据面板)

文章目录 二、命令列表2.1 jvm相关命令2.1.1 dashboard(当前系统的实时数据面板) 二、命令列表 2.1 jvm相关命令 2.1.1 dashboard(当前系统的实时数据面板) 使用场景: 在 Arthas 中,dashboard 命令用于提…

echarts实现地图下钻并解决海南群岛显示缩略图

一、准备工作 1、echarts版本: ^5.5.1 2、去掉海南数据的json文件 二、获取删除过后的json文件 1、DataV.GeoAtlas地理小工具系列 (aliyun.com) 在网站输入这个复制的,新建一个json文件粘贴进去。 接下来需要删除两个地方,不要删错&…

前端vue-关于标签切换的实现

首先是循环,使用v-for“(item,index) in list” :key“item.id” 然后当点击哪个的时候再切换,使用v-bind:class" "或者是:class" ",如果都是用active的话,那么每一个标签都是被选中的状态,…

[C高手编程] C语言宏、内置宏与预处理:深入理解与应用

💖💖⚡️⚡️专栏:C高手编程-面试宝典/技术手册/高手进阶⚡️⚡️💖💖 「C高手编程」专栏融合了作者十多年的C语言开发经验,汇集了从基础到进阶的关键知识点,是不可多得的知识宝典。如果你是即将…

TypeScript异常处理

1.异常的概念 程序运行中意外发生的情况就成为异常 例子: //除法运算function chu(num1:number,num2:number){if(num20){//throw 抛出异常throw new Error(除数不能为零)}let num:numbernum1/num2console.log(num) }//程序出现异常后会停止运行// 捕获异常try{ /…

《黑神话悟空》开发框架与战斗系统解析

本文主要围绕《黑神话悟空》的开发框架与战斗系统解析展开 主要内容 《黑神话悟空》采用的技术栈 《黑神话悟空》战斗系统的实现方式 四种攻击模式 连招系统的创建 如何实现高扩展性的战斗系统 包括角色属性系统、技能配置文件和逻辑节点的抽象等关键技术点 版权声明 本…

【他山之石】Humanize AI 简介

Humanize AI 简介 Humanize AI 官方首页截图 文章目录 Humanize AI 简介1 Humanize AI 是什么2 Humanize AI 能做什么3 Humanize AI 怎么用4 Humanize AI 怎么收费5 结论 1 Humanize AI 是什么 数字时代的当下,AI 人工智能已成为内容创作不可或缺的一部分。从生成文…

poi-tl的详细教程(动态表格、单元格合并)

前提了解poi-tl 链接: springboot整合poi-tl 创建word模板 实现效果 代码实现 ServerTableData import com.deepoove.poi.data.RowRenderData;import java.util.List;public class ServerTableData {/*** 携带表格中真实数据*/private List<RowRenderData> serverDat…

【Python常用模块】_PyMySQL模块详解

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

window.open()地址栏隐藏问题解决方案

问题 使用window.open打开一个页面时&#xff0c;想要隐藏地址栏&#xff0c;但是无效。 window.open (test.html,newwindow,height100,width400,top0,left0,toolbarno,menubarno,scrollbarsno, resizableno,locationno, statusno)由于浏览器区别和安全问题&#xff0c;浏览器…

最新动态一致的文生视频大模型FancyVideo部署

FancyVideo是一个由360AI团队和中山大学联合开发并开源的视频生成模型。 FancyVideo的创新之处在于它能够实现帧特定的文本指导&#xff0c;使得生成的视频既动态又具有一致性。 FancyVideo模型通过精心设计的跨帧文本引导模块&#xff08;Cross-frame Textual Guidance Modu…

数据结构里的栈和队列

栈的笑话 程序员A对程序员B说&#xff1a;“你知道为什么程序员喜欢栈吗&#xff1f;” 程序员B疑惑地问&#xff1a;“为什么&#xff1f;” 程序员A回答&#xff1a;“因为它没有bug&#xff08;bug的谐音在英语中也是‘虫子’的意思&#xff0c;而栈的英文是stack&#x…

Elasticsearch:一次生产集群 ES Watcher 失效的深度排查与分析 - 全过程剖析与解决方案

作者&#xff1a;尚雷&#xff0c;TechTalk 技术交流社区创办者 一次生产集群 ES Watcher 失效的深度排查与分析 全过程剖析与解决方案​​ 一、Elasticsearch Watcher 介绍 1.1 Watcher 概念概述 Watcher 是 Elasticsearch 提供的一项监控和告警服务&#xff0c;允许用户定义…

Mybatis 快速入门(maven)

文章目录 需求建表新建了数据库但是navicat界面没有显示 新建maven项目 注意导入依赖 总结 黑马学习笔记 需求 建表 注意&#xff1a;设置字符集 减少出错 drop database mybatis; create database mybatis charset utf8; use mybatis;drop table if exists tb_user;create…