[C#]winform部署openvino调用padleocr模型

【官方框架地址】

https://github.com/PaddlePaddle/PaddleOCR
【算法介绍】

OpenVINO和PaddleOCR都是用于计算机视觉应用的工具,但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件,主要用于加速深度学习推理,而PaddleOCR是PaddlePaddle框架的一个组件,主要用于光学字符识别(OCR)。

下面将介绍如何使用OpenVINO调用PaddleOCR,主要分为以下步骤:

  1. 安装OpenVINO和PaddleOCR:首先需要安装OpenVINO和PaddleOCR。可以从它们的官方网站上下载并按照说明进行安装。
  2. 准备数据:需要准备一组训练好的模型和输入数据。这些模型应该是在PaddleOCR上训练的,并且是ONNX格式。输入数据可以是图像或视频。
  3. 转换模型:使用OpenVINO的Model Optimizer工具将ONNX格式的模型转换为OpenVINO可以使用的格式。这一步将生成一个IR(Intermediate Representation)文件和一个XML文件。
  4. 配置推理引擎:创建一个XML文件来配置推理引擎。这个文件描述了如何加载模型,以及如何处理输入和输出数据。
  5. 调用推理引擎:使用OpenVINO的推理引擎来执行推理。推理引擎将从配置文件中读取模型和输入数据,并执行推理,然后返回结果。
  6. 处理结果:最后,需要对推理结果进行处理,例如将文本转换为字符串,或者将结果可视化。

需要注意的是,由于OpenVINO和PaddleOCR都是深度学习工具,因此需要一定的计算机视觉和深度学习知识才能正确使用它们。此外,由于它们都是大型工具套件,因此安装和配置可能需要一些时间和经验。

【效果展示】


【实现部分代码】

 string detectionModelDir = Application.StartupPath + "\\weights\\ch_PP-OCRv4_det_infer";
                string classificationModelDir = Application.StartupPath + "\\weights\\ch_ppocr_mobile_v2.0_cls_infer";
                string recognitionModelDir = Application.StartupPath + "\\weights\\ch_PP-OCRv4_rec_infer";
                string labelFilePath = Application.StartupPath + "\\weights\\ppocr_keys_v1.txt";
                FullOcrModel model = FullOcrModel.FromDirectory(detectionModelDir, classificationModelDir, recognitionModelDir, labelFilePath, ModelVersion.V4);

                PaddleOcrAll all = new PaddleOcrAll(model);
                all.AllowRotateDetection = true; /* 允许识别有角度的文字 */
                all.Enable180Classification = false; /* 允许识别旋转角度大于90度的文字 */

                Stopwatch sw = new Stopwatch();
                sw.Start();
                PaddleOcrResult result = all.Run(src);
                sw.Stop();
                Console.WriteLine("总耗时是:" + sw.Elapsed.TotalSeconds + "秒");
                tb_res.Text = result.Text;
                foreach (PaddleOcrResultRegion item in result.Regions)
                {
                    Cv2.Rectangle(src, item.Rect.BoundingRect(), new Scalar(255, 0, 0));
                }
                pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);


【视频演示】

https://www.bilibili.com/video/BV1iK4y1q7kk/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee
【源码下载】
【测试环境】

vs2019,netframework4.7.2
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javaweb之SpringBootWeb案例员工管理之删除员工的详细解析

3.3 删除员工 查询员完成之后,我们继续开发新的功能:删除员工。 3.3.1 需求 当我们勾选列表前面的复选框,然后点击 "批量删除" 按钮,就可以将这一批次的员工信息删除掉了。也可以只勾选一个复选框,仅删除一…

【开源】基于JAVA语言的免税店商城管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…

代码之外:工程师的成长进阶秘籍

程序员只懂技术能行吗? 为什么说技术人员“说”和“写”总得擅长一个? 你以为的“关注结果”是真的结果吗? 从一线工程师跃升团队管理者一共分几步? 在不断变化的职场环境中,技术人如何保持竞争力并实现自我增值&a…

【消息队列】RocketMQ 生产和消费中的集群模式和广播模式

在消息队列系统中,生产者和消费者的模式通常包括集群模式和广播模式。这两种模式分别用于不同的场景,具有不同的特点和优势。 1. 集群模式(Cluster Mode): 在集群模式下,多个相同角色的实例组成一个集群&…

精品量化公式——“筹码动态”,筹码动态改进版,增加了三个买点信号标识

不多说,直接上效果如图: ► 日线表现 代码评估 技术指标代码评估: 散筹估算: 使用EMA(指数移动平均)方法计算(WINNER(C*1.1)-WINNER(C*0.9))*70的3日均线,用黄色粗线表示。这是用于估算市场中散户投资者的…

三维重建(3)--单视几何

目录 一、无穷远点、无穷远线、无穷远平面 1、2D平面上的无穷远问题 2、3D平面上的无穷远问题 二、影消点与影消线 1、2D平面上的无穷远点,无穷远线变换 2、影消点 3、影消线 三、单视重构 1、两平行线夹角与影消线关系 2、单视图标定 一、无穷远点、无…

Vue3 在 history 模式下通过 vite 打包部署白屏

Vue3 在 history 模式下通过 vite 打包部署后白屏; 起因 hash 模式 url 后面跟个 # 强迫症犯了改成了 history,就此一波拉锯战开始了 ... 期间 nigix 和 router 各种反复排查尝试最终一波三折后可算是成功了 ... Vue官方文档 具体配置可供参考如下: 先简要介绍下,当前项目打包…

【网站项目】331基于jsp的超市库存商品管理系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

paramiko 、netmiko抛出 No existing session的解决方法。

写这篇文章,是因为我在H3C交换机上很正常的代码,可以ssh登录,但huawei交换机上失败,用CSDN上的文章关于allow_agentFalse,look_for_keysFalse 处理还是失败后,找相关的一些帖子总结的必须修改paramiko的源代码文章。 如…

Mysql:重点且常用的 SQL 标签整理

目录 1 <resultMap> 标签 2 <sql> 标签 3 <where> 标签 4 <if> 标签 5 <trim> 标签 6 <foreach> 标签 7 <set> 标签 1 <resultMap> 标签 比如以下代码&#xff1a; <resultMap type"SysCollege" id&qu…

【2024.1.19练习】B:01串的熵

B: 01串的熵&#xff08;5分&#xff09; 问题描述 对于一个长度为23333333的01串&#xff0c;如果其信息熵为11625907.5798&#xff0c;且0 出现次数比1 少&#xff0c;那么这个01 串中0出现了多少次&#xff1f; 我的代码&#xff1a; 注意调用<cmath>以便于对数运算…

Android-三方框架的源码

ARouter Arouter的整体思路是moduelA通过中间人ARouter把路由信息的存到仓库WareHouse&#xff1b;moduleB发起路由时&#xff0c;再通过中间人ARouter从仓库WareHouse取出路由信息&#xff0c;这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务prov…

2024 Move开发者大会在上海圆满落幕,第三期星航计划启动

*以下文章来源于MoveFuns &#xff0c;作者MoveFuns 至各位Mover&#xff1a; 2024 Move DevConfShanghai 圆满成功。在这次盛会上&#xff0c;我们围绕着Move生态关键的一年这一主题进行了深入的讨论和交流。 以下是本次会议的总结回顾&#xff1a; 大会盛况 本次大会在上…

大模型学习与实践笔记(九)

一、LMDeply方式部署 使用 LMDeploy 以本地对话方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事 2.api 方式部署 运行 结果&#xff1a; 显存占用&#xff1a; 二、报错与解决方案 在使用命令&#xff0c;对lmdeploy 进行源码安装是时&#xff0c;报错 1.源…

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件)&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;来存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段和索引段&#xff0c;回滚段&#xff0c;数据段就是B树的叶子节点&am…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块&#xff0c;但是yakit也是可以爆破的&#xff0c;并且更好用&#xff08;个人感觉&#xff09;。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git&#xff0c;并完成路径配置。 &#xff08;本文提供了gitee下载&#xff0c;国外的Github下载较慢。&#xff09;

《WebKit 技术内幕》之四(1): 资源加载和网络栈

第四章 资源加载和网络栈 使用网络栈来下载网页和网页资源是渲染引擎工作的第一步 1.WebKit 资源加载机制 1.1 资源 网页本身就是一种资源、网页还需要依赖很多其他的资源(图片、视频) &#xff08;1&#xff09;HTML 支持的资源主要包括以下几种类型&#xff1a; HTML 页…

【并发编程系列】putIfAbsent和getOrDefault用法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…