[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测

news2024/12/15 8:50:05

【算法介绍】

ddddocr是一个强大的Python OCR(光学字符识别)库,特别适用于验证码识别。它利用深度学习技术,如卷积神经网络(CNN)和循环神经网络(RNN),对图像中的文字进行高效准确的识别。虽然ddddocr本身是一个Python库,但你可以通过一些方法将其功能集成到Winform应用程序中,以进行验证码识别、文字识别和文字检测。

要在Winform中部署ddddocr的ONNX模型进行验证码识别等任务,你可以考虑以下步骤:

  1. 环境准备:确保你的Winform应用程序可以调用Python脚本或库。这通常涉及安装Python解释器和相关的Python库。
  2. 安装ddddocr:在你的Python环境中安装ddddocr库。
  3. 模型准备:如果ddddocr使用了ONNX模型,确保该模型已正确下载并可在Python环境中加载。
  4. 集成Python和Winform:你可以通过C#的Python.NET库或其他类似工具来调用Python脚本或函数,从而在Winform中集成ddddocr的功能。
  5. 编写代码:在Winform应用程序中编写代码,调用ddddocr的API进行验证码识别、文字识别或文字检测。
  6. 测试和调试:确保集成的功能正常工作,并根据需要进行调整和优化。

请注意,由于ddddocr是一个Python库,直接在Winform中部署其ONNX模型可能需要一些额外的工作。因此,建议详细阅读ddddocr的文档,并考虑使用Python和C#之间的桥梁工具来实现集成。

【源码地址】

github.com/sml2h3/ddddocr

【界面设计】

【效果展示】

文本识别结果可以在控制台查看

滑块识别目前效果不佳,暂时放弃研究,因为我们主要用于文字检测识别比较多。

【调用代码】

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.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        string videoPath = null;
       

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Mat ocr = new Mat(Application.StartupPath + "\\images\\ocr.jpg", ImreadModes.AnyColor);
            DDDDOCR ddddOcrOcrOld = new DDDDOCR(Application.StartupPath + "\\weights\\common_old.onnx", DdddOcrMode.ClassifyOld);
            var OcrOldResult = ddddOcrOcrOld.Classify(ocr.ToBytes());
            Console.WriteLine("旧版本文本识别结果:" + OcrOldResult);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Mat ocr = new Mat(Application.StartupPath + "\\images\\ocr.jpg", ImreadModes.AnyColor);
            DDDDOCR ddddOcrOcrNew = new DDDDOCR(Application.StartupPath + "\\weights\\common.onnx", DdddOcrMode.ClassifyBeta);
            var OcrNewResult = ddddOcrOcrNew.Classify(ocr.ToBytes());
            Console.WriteLine("新版本文本识别结果:" + OcrNewResult);





           



        }

        private void Form1_Load(object sender, EventArgs e)
        {
          
        }

        private void button3_Click(object sender, EventArgs e)
        {
         
            Mat det = new Mat(Application.StartupPath + "\\images\\det.png", ImreadModes.AnyColor);
            DDDDOCR ddddOcrDet = new DDDDOCR(Application.StartupPath + "\\weights\\common_det.onnx", DdddOcrMode.Detect);
            var Detresult = ddddOcrDet.Detect(det.ToBytes());
            foreach (var item in Detresult)
            {
                det.Rectangle(item, new Scalar(0, 0, 255), 2);
            }

            Console.WriteLine("目标识别到的坐标为:" + JsonSerializer.Serialize(Detresult));
            pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(det);




          
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //效果不佳,暂时不开发
            Mat tg = new Mat(Application.StartupPath + "\\images\\tg1.png", ImreadModes.AnyColor);
            Mat bg = new Mat(Application.StartupPath + "\\images\\bg1.png", ImreadModes.AnyColor);
            var (target_y, rect) = DDDDOCR.SlideMatch(tg, bg, 44, true);
            Console.WriteLine("SlideMatch滑块的Y坐标为:" + target_y + "\r\nSlideMatch滑块缺口方框为:" + JsonSerializer.Serialize<Rect>(rect));
            bg.Rectangle(rect, new Scalar(0, 255, 255), 2);
            pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(bg);

        }
    }
}

 【测试环境】

vs2019

netframework4.7.2

opencvsharp==4.8.0

onnxruntime==1.16.3

【运行步骤】

下载源码后使用vs2019打开,打开前确保vs安装的没问题并且C#模块安装好了。选择x64 debug即可直接运行看效果。如果报错可能DLL引用问题,可以参考我的其他博文。

【完整源码和模型文件下载】

download.csdn.net/download/FL1623863129/88540194

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

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

相关文章

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

云服务器搭建lamp的wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Apache1.2 检查是否安装Mysql1.3 检查是否安装PHP 二、安装Apache截图 三、安装Mysql3.1 安全安装配置3.2 修改权限和密码3.3 重启MySQL服务 四、安装PHP4.1 测试截图 五、下载并安装wordpress以及配置5.1 下载并解压移动5…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面&#xff0c;无法继承Pen定义绘制的对象直线等&#xff08;颜色&#xff0c;粗细&#xff09;Font定义文本格式&#xff08;字体&#xff0c;字号&#xff09; 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

babeltrace与CTF相关学习笔记-4

babeltrace与CTF相关学习笔记-4 写在前面metadata_string 重头开始定位&#xff0c;操作meta的位置bt_ctf_trace_get_metadata_string stream部分内存的问题 写在前面 正在并行做几件事。 在编译过程中&#xff0c;突然想到&#xff0c;还是再详细研究一下之前的例程。 一是详…

多旋翼无人机 :桨叶设计—跷跷板结构

多旋翼无人机 &#xff1a;桨叶设计——跷跷板结构 前言跷跷板结构 前言 2024年11月&#xff0c;大疆发布了最新的农业无人机T70和T100。其中T70不同于以往的机型&#xff0c;在桨夹处采用了翘翘板结构&#xff0c;大疆将其命名为“挥舞桨叶”。 T70 无人机如下 放大其中螺旋…

低通滤波器,高通滤波器,公式

1 低通滤波器 &#xff1a;输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后&#xff0c;波形光滑&#xff0c;绿色波形。一致 4 电容充电速度跟不上输入信号的速度&#xff08;因为加了电阻&#xff0c;限制了电流&…

如何打造个人知识体系?

第一&#xff0c;每个人的基本情况不同。比如我有一个类别跟「设计」相关&#xff0c;这是自己的个人爱好&#xff0c;但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关&#xff0c;因为里面很多表达可以借用到演讲或写作中&#xff0c;这也不适合所有人。 第二&am…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…

《自动驾驶技术的深度思考:安全与伦理的挑战》

内容概要 在当今这个自动驾驶技术飞速发展的时代&#xff0c;我们生活的节奏恰似一场疾驰的赛车&#xff0c;然而&#xff0c;赛道上并非总是平坦。在这场技术革命中&#xff0c;安全与伦理问题像是潜伏在阴影中的幽灵&#xff0c;轮番考验着我们的道德底线与法律界限。 随着…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!

还记得第一次使用ChatGPT时&#xff0c;那种既兴奋又困惑的心情吗&#xff1f;我是从一个对AI一知半解的普通用户&#xff0c;逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就&#xff0c;而是通过不断的探索和实践&#xff0c;掌握了一系列高效使用的技巧。今天&#…

汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动

故障现象 一辆2014款保时捷卡宴车&#xff0c;搭载3.0T 发动机&#xff0c;累计行驶里程约为18万km。车主反映&#xff0c;发动机偶尔无法起动。 故障诊断 接车后试车&#xff0c;发动机起动及运转均正常。用故障检测仪检测&#xff0c;发动机控制单元&#xff08;DME&#x…

aippt:AI 智能生成 PPT 的开源项目

aippt&#xff1a;AI 智能生成 PPT 的开源项目 在现代办公和学习中&#xff0c;PPT&#xff08;PowerPoint Presentation&#xff09;是一种非常重要的展示工具。然而&#xff0c;制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题&#xff0c;aippt项目应运…

【泛微系统】流程发起次数报表

流程发起次数报表 应用场景: 查询所有发起过业务流程的员工的信息,可作为绩效考核、系统使用情况等依据; 如何使用该SQL生成系统在线报表,实时查询最新的发起数据? 1、数据库创建视图,并定义一个视图名称如;view_test1 2、系统后台建模引擎-表单-右键创建一个虚拟表单…

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下&#xff1a; &#xff08;1&#xff09; 当线圈中有电流通过时&#…

IDEA 修改格式化仅格式化本次改动代码

最近总是发现格式化的时候会格式化文件所有代码&#xff0c;提交Git 后再看提交日志&#xff0c;就很不清晰。修改方式如下 中文&#xff1a; 格式化代码快捷键[中文配置]&#xff1a; 英文&#xff1a; 格式化代码快捷键[英文配置]&#xff1a;

数据结构开始——时间复杂度和空间复杂度知识点笔记总结

好了&#xff0c;经过了漫长的时间学习c语言语法知识&#xff0c;现在我们到了数据结构的学习。 首先&#xff0c;我们得思考一下 什么是数据结构&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素…

【游戏设计原理】7 - 加德纳的多元智能理论

虽然多元智能理论是对认知方式的分类&#xff0c;但它也可以为游戏设计提供丰富的思路和策略&#xff0c;帮助设计师创建更具吸引力、包容性和多样性的游戏。通过理解不同玩家的认知方式和优势&#xff0c;我们可以更精准地设计游戏的元素和玩法&#xff0c;使其能够吸引广泛的…

【OpenCV】基于分水岭算法的图像分割

介绍 分水岭算法&#xff08;Watershed Algorithm&#xff09;是一种基于形态学的图像分割方法&#xff0c;它模仿了地理学中的分水岭概念。在图像处理中&#xff0c;分水岭算法通过模拟水流从山顶流向谷底的过程来分割图像&#xff0c;其中局部极小值点被视为“山谷”&#x…

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS&#xff08;二进制安装非源码安装&#xff09;测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器&#xff0c;要退出…