[C#]使用OpenCvSharp实现区域文字提取

【官方框架地址】

github.com/shimat/opencvsharp
【算法介绍】

采用opencv算法实现文字区域提取,步骤如下:
(1)形态学操作
(2)查找轮廓
(3)筛选那些面积小的
(4)面积小的都筛选
(5)找到最小的矩形

【效果展示】

原图

提取结果:

【实现部分代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;namespace FIRC
{public partial class Form1 : Form{Mat src = new Mat();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";openFileDialog.RestoreDirectory = true;openFileDialog.Multiselect = false;if (openFileDialog.ShowDialog() == DialogResult.OK){src = Cv2.ImRead(openFileDialog.FileName);pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);}}private void button2_Click(object sender, EventArgs e){if(pictureBox1.Image==null){return;}var resultMat =RegionManager.FindTextRegion(src);pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap}private void Form1_Load(object sender, EventArgs e){}private void button3_Click(object sender, EventArgs e){}}
}


【源码下载】

https://download.csdn.net/download/FL1623863129/88706018
【测试环境】

vs2019
netframework4.7.2
opencvsharp4.8.0
 

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

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

相关文章

01.从头梳理--应用软件全生命周期中可用工具(Java方向)

在管理软件的全生命周期中,有很多辅助工具可以帮助开发和管理Java项目。以下是一些主要的工具和框架,这些工具主要在需求收集、设计、开发、测试、部署和运营维护等阶段发挥作用: 1.需求收集工具 JIRA::一个灵活的问题和项目跟踪…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)主线程给子线程添加任务以及如何处理该任务

在看此篇文章,建议先看我的往期文章: 基于多反应堆的高并发服务器【C/C/Reactor】(中)在EventLoop的任务队列中添加新任务-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135346492?spm1001.2014.3001.5501一…

Raft Lab3A

Lab3 需要在 Raft 层上实现一个 fault-tolerant key-value service,满足强一致性,也就是线性一致性 (Linearizable Consistency)。线性一致性保证整个系统看起来好像只有一个副本,其中所有的操作都是原子性的。简单地说,线性一致性…

什么是发作性睡病?

发作性睡病是一种罕见的神经系统疾病,主要症状表现为无法控制的白天嗜睡。此病在全球范围内的发病率约为0.02-0.18%,通常在儿童或青少年时期发病。 首先,我们来了解一下发作性睡病的典型症状。患者在清醒状态下,如上课、开会或开…

swift ——多行文字前面内容省略

首先来说一说ios中的 lineBreakModelineBreakMode : 设置文字过长时的显示截断样式 可选值如下 byWordWrapping : 以单词为单位换行,以单词为单位截断。byCharWrapping :以字符为单位换行,以字符为单位截断。byClipping &#x…

C+语言的新特性

总是期待学习别人做好了的东西,是否也是一种懒惰呢? C语言是一门想象中的语言,它介于C和C之间。新的研究表明,C语言不支持某些特性,而C过于复杂。于是,便有了C语言,它的新特性如下: …

【Proteus仿真】【Arduino单片机】太阳能追光系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶、光敏传感器、ADC模块、按键模块、28BYJ48步进电机驱动模块、直流电机模块等。 主要功能: 系统运行后,L…

QGIS009:QGIS常用插件、GDAL和GRASS GIS常用工具

摘要:本文介绍QGIS支持的数据格式、QGIS常用插件以及GDAL和GRASS GIS模块常用工具。 一、QGIS支持的数据格式 1、矢量数据格式 1.1文件格式 ESRI Shapefile(SHP):ESRI公司开发的一种空间矢量数据文件格式,是最为常用的矢量数据格式之一,支持点、线、面等要素类型。GeoJ…

vue 的实例生命周期

Vue.js 的实例生命周期指的是 Vue 实例在创建、更新和销毁过程中的一系列事件和钩子函数,允许在不同阶段执行自定义操作。Vue 实例的生命周期可以分为以下阶段: 创建(Creation): beforeCreate:在实例初始化…

DS|哈夫曼编码及应用

题目一:DS树 -- 赫夫曼树的构建与编码 题目描述: 给定n个权值,根据这些权值构造huffman树,并进行huffman编码 注意数组访问是从位置1开始 要求:赫夫曼的构建中,默认左孩子权值不大于右孩子权值 输入要…

淘宝商品详情API接口(item_get-获得淘宝商品详情)主图,属性,sku,价格,搜索商品列表

淘宝开放平台提供了API接口,允许开发者获取淘宝商品的相关信息。为了获取商品详情,您可以使用 item_get API接口。以下是如何使用此API接口来获取商品的主图、属性、SKU、价格以及搜索商品列表的简要说明: 公共参数 名称类型必须描述keyStr…

PromptCast:基于提示学习的时序预测模型!

目前时序预测的SOTA模型大多基于Transformer架构,以数值序列为输入,如下图的上半部分所示,通过多重编码融合历史数据信息,预测未来一定窗口内的序列数值。 受到大语言模型提示工程技术的启发,文章提出了一种时序预测新…

Redis小计(3)

目录 redis为什么是单线程模型和为什么不推荐使用"keys *"指令 redis为什么是单线程模型和为什么不推荐使用"keys *"指令 单线程模型可以避免线程安全问题,即并发访问导致的数据冲突。当大量客户端发来请求时,redis服务器只能一个一…

排序之冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 思路: 左边大于右边交…

Mobileperf:优化移动应用性能的关键工具

引言: 随着移动设备的普及和功能的不断增强,移动应用在人们的日常生活中扮演着越来越重要的角色。然而,由于移动设备资源有限,如处理器、内存和电池等,移动应用的性能问题也日益突出。为了提高用户体验和满足用户需求&…

单机部署Rancher

上次已经安装完毕了k8s了,但是想要界面化的管理,离不开界面工具,首推就是rancher,本文介绍安装rancher的安装,也可以将之前安装的k8s管理起来。 已经安装完毕docker和docker-ce的可以直接从第三部分开始。 一、基础准…

【数据库原理】(10)数据定义功能

SQL 数据定义功能包括定义模式、定义表、定义索引和定义视图,其语句如表所示。 一.创建、删除模式 1.创建模式 (Create Schema) 用途:创建模式是为了在数据库中定义一个新的命名空间,它可以包含多个数据库对象。 语法: CREATE SCHEMA &…

json.stringify()详解

json.stringify()详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同深入探讨在JavaScript中常用的JSON处理方法——JSON.stringify()&…

数据库期末重点

第一章: 1.数据库发展的三个阶段 第一代数据库系统、第二代数据库系统、新一代数据库系统 2.数据库系统发展的三个里程碑 IMS系统、DBTG报告、关系数据库系统 3.数据管理技术三个阶段 人工管理阶段(40年代中-50年代中) 文件系统阶段(50年代末-60年代中) 数据…

选择排序!!!基础排序详解 C语言版

目录 1.什么是选择排序 2.选择排序源代码 3.优化代码 1.什么是选择排序 这是一个选择排序的流程图,其实很简单,就是每次挑选数字中最小的作为第一个 ,直到整个数据有序就结束了 顾名思义,选择,那就是选取&#xff0c…