文章目录

  • 1 Winform 窗口界面 (带渲染的参数配置控件)
  • 2 配置代码
  • 3 运行测试
  • 4 不带渲染的参数配置控件 对比
    • 4.1 添加控件
    • 4.2 代码及演示效果

模块参数配置

本教程介绍如何在VM二次开发中对模块参数进行配置

在这里插入图片描述

1 Winform 窗口界面 (带渲染的参数配置控件)

VmParamsConfigControl是不带渲染的参数配置控件;
VmParamsConfigWithRenderControl是带渲染的参数配置控件;

在上一将的基础上继续添加渲染及数据结果获取,显示在Winform界面 【条码/一维码识别】;

在Form1窗口,添加GroupBox 和VmParamsConfigWithRenderControl控件;
在这里插入图片描述

2 配置代码

在方案执行,按钮下面添加参数配置代码

在上一将的基础上继续添加渲染及数据结果获取,显示在Winform界面 【条码/一维码识别】;

第一行代码为实例化一个模块;
需要通过字符识别类来定义并实例化一个字符识别模块对象;
在这里插入图片描述

private void button3_Click(object sender, EventArgs e)
{//模块参数配置//第一行代码为实例化一个模块;//需要通过字符识别类来定义并实例化一个字符识别模块对象;IMVSOcrModuCs.IMVSOcrModuTool ocrTool = (IMVSOcrModuCs.IMVSOcrModuTool)VmSolution.Instance["流程1.字符识别1"];vmParamsConfigWithRenderControl1.ModuleSource = ocrTool;VmSolution.Instance.SyncRun();//此函数,会同步执行一次方案中的所有流程listBox1.Items.Add("方案执行一次成功!");listBox1.TopIndex = listBox1.Items.Count - 1;//获取结果,分为渲染结果和数据结果;//渲染结果显示在界面上,//数据结果获取后用户可进行输出或其它处理,本示例将数据结果显示在消息区;//将其与先前VM中配置好输出的流程1进行绑定VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];//然后将渲染控件的显示源ModuleSource绑定流程1对象vmRenderControl1.ModuleSource = vmProcess1;//通过此代码即可获取到格式化中订阅的字符识别结果strValuestring ocrResult = vmProcess1.ModuResult.GetOutputString("out1").astStringVal[0].strValue;string ocrNum = vmProcess1.ModuResult.GetOutputInt("out0").pIntVal[0].ToString();listBox1.Items.Add("OCR识别结果:" + ocrResult);listBox1.TopIndex = listBox1.Items.Count - 1;listBox1.Items.Add("字符个数:" + ocrNum);listBox1.TopIndex = listBox1.Items.Count - 1;}

如果出现下面拨错,是因为目前还未添加模块的引用
在这里插入图片描述
右键引用–>添加引用–>搜索ocr—>选择IMVSOcrModuCs这个库添加
在这里插入图片描述

3 运行测试

  • OCR识别–VM方案介绍:

    • 案例目的是为了展示传统OCR识别工具对字符的识别过程:

    • 1,用特征匹配和位置修正对字符定位;

    • 2,字符识别模块ROI框出需要识别的字符,然后提取字符并训练。

    • 注:OCR具有两个识别结果,用户可根据两个结果进行其它操作。

在这里插入图片描述

  • 程序运行加载方案后,

直接在流程区中双击VM模块即可在弹窗中进行参数配置;
在这里插入图片描述

在这里插入图片描述

代码中的对象绑定的是流程1中的字符识别1模块,
方案执行后,便可以在参数配置区看到这个字符识别模块的参数配置;
带渲染的参数配置控件相比于普通参数配置控件多出一个图像渲染显示区域;

  • 点击方案执行验证效果,
    区域中显示出了字符识别模块的参数配置界面;
    在运行参数中更改算法参数,可以在渲染界面实时查看效果;

在这里插入图片描述

4 不带渲染的参数配置控件 对比

4.1 添加控件

接下来演示另一个参数配置控件,
首先调整下界面布局,将控件的Dock属性设置为None,然后调整控件的位置和大小;
将不带渲染的参数配置控件VmParamsConfigControl拖拉到参数配置区中 ;

在这里插入图片描述
参数配置区
上方是,不带渲染的参数配置控件
下方是, 带渲染的参数配置控件(渲染就是显示处理的图像)

4.2 代码及演示效果

在方案执行按钮中添加一行代码

  vmParamsConfigControl1.ModuleSource = ocrTool;//不带渲染的参数配置控件

在这里插入图片描述

private void button3_Click(object sender, EventArgs e)
{//模块参数配置//第一行代码为实例化一个模块;//需要通过字符识别类来定义并实例化一个字符识别模块对象;IMVSOcrModuCs.IMVSOcrModuTool ocrTool = (IMVSOcrModuCs.IMVSOcrModuTool)VmSolution.Instance["流程1.字符识别1"];vmParamsConfigWithRenderControl1.ModuleSource = ocrTool;// 带渲染的参数配置控件(渲染就是显示处理的图像)vmParamsConfigControl1.ModuleSource = ocrTool;//不带渲染的参数配置控件VmSolution.Instance.SyncRun();//此函数,会同步执行一次方案中的所有流程listBox1.Items.Add("方案执行一次成功!");listBox1.TopIndex = listBox1.Items.Count - 1;//获取结果,分为渲染结果和数据结果;//渲染结果显示在界面上,//数据结果获取后用户可进行输出或其它处理,本示例将数据结果显示在消息区;//将其与先前VM中配置好输出的流程1进行绑定VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];//然后将渲染控件的显示源ModuleSource绑定流程1对象vmRenderControl1.ModuleSource = vmProcess1;//通过此代码即可获取到格式化中订阅的字符识别结果strValuestring ocrResult = vmProcess1.ModuResult.GetOutputString("out1").astStringVal[0].strValue;string ocrNum = vmProcess1.ModuResult.GetOutputInt("out0").pIntVal[0].ToString();listBox1.Items.Add("OCR识别结果:" + ocrResult);listBox1.TopIndex = listBox1.Items.Count - 1;listBox1.Items.Add("字符个数:" + ocrNum);listBox1.TopIndex = listBox1.Items.Count - 1;}

参数配置区
上方是,不带渲染的参数配置控件
下方是, 带渲染的参数配置控件(渲染就是显示处理的图像)
在这里插入图片描述

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

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

相关文章

Android 之 蓝牙通信(2.0 经典)

​​一、环境配置​​1. ​​添加依赖​​在 build.gradle 中添加库依赖&#xff1a;dependencies {implementation com.github.akexorcist:bluetoothspp:1.0.0 }2. ​​权限声明&#xff08;AndroidManifest.xml&#xff09;​<uses-permission android:name"androi…

使用 Scikit-LLM 进行零样本和少样本分类

使用 Scikit-LLM 进行零样本和少样本分类 使用 Scikit-LLM 进行零样本和少样本分类 在本文中&#xff0c;您将学习&#xff1a; Scikit-LLM如何将OpenAI的GPT等大型语言模型与Scikit-learn框架集成以进行文本分析。零样本和少样本分类之间的区别以及如何使用Scikit-LLM实现它…

android内存作假通杀补丁(4GB作假8GB)

可过如下app检测&#xff1a; 安兔兔、鲁大师、白眼、AIDA64、CPU X、CPU-Z、DevCheck、DeviceInfoHW lyw235yk235:~/Extend/lyw235/V/sprdroid1_v_4/sprdroid1_v$ git diff vnd/bsp/kernel5.15/kernel5.15/mm/page_alloc.c diff --git a/vnd/bsp/kernel5.15/kernel5.15/mm/pag…

Android 之 MVC架构

介绍1. MVC架构分工​​​​Model层​​&#xff1a;处理数据验证、网络请求等业务逻辑。​​View层​​&#xff1a;XML布局定义界面&#xff0c;Activity处理用户输入和显示结果。​​Controller层​​&#xff1a;Activity作为控制器&#xff0c;协调Model和View的交互对于登…

Centos Docker 安装手册(可用)

Centos 安装 Docker # 卸载旧版 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \docker-selinux # 安装依赖工具 yum install -y yum-utils device-mapper-persistent-d…

烽火HG680-KX-海思MV320芯片-2+8G-安卓9.0-强刷卡刷固件包

烽火HG680-KX-海思MV320芯片-28G-安卓9.0-强刷卡刷固件包U盘强刷刷机步骤&#xff1a;1、强刷刷机&#xff0c;用一个usb2.0的8G以下U盘&#xff0c;fat32&#xff0c;2048块单分区格式化&#xff08;强刷对&#xff35;盘非常非常挑剔&#xff0c;usb2.0的4G U盘兼容的多&…

Python爬虫实战:研究pycares技术构建DNS解析系统

1. 引言 1.1 研究背景 随着互联网的飞速发展,网络上的数据量呈现爆炸式增长。网络爬虫作为一种高效的数据采集工具,被广泛应用于数据分析、市场调研、学术研究等领域。传统的爬虫在进行大规模数据采集时,往往会受到 DNS 解析效率的制约,成为影响爬取性能的瓶颈之一。 DNS…

从 0 到 1 认识 Spring MVC:核心思想与基本用法(下)

文章目录&#x1f4d5;4. 响应✏️4.1 返回静态页面✏️4.2 返回数据ResponseBody​✏️4.3 返回HTML代码片段​✏️4.4 返回JSON✏️4.5 设置状态码✏️4.6 设置Header&#xff08;了解&#xff09;&#x1f4d5;5. 案例练习✏️5.1 加法计算器✏️5.2 用户登录✏️5.3 留言板…

Python-初学openCV——图像预处理(五)——梯度处理、边缘检测、图像轮廓

目录 一、图像梯度处理 1、垂直边缘提取 2、Sobel算子 3、Laplacian算子 二、图像边缘检测 1、高斯滤波 2、计算图像的梯度、方向 3、非极大值抑制 4、双阈值筛选 三、绘制图像轮廓 1、概念 2、寻找轮廓 3、绘制轮廓 一、图像梯度处理 还记得高数中的一阶导数求极值…

【Redis】安装Redis,通用命令,常用数据结构,单线程模型

目录 一.在Ubuntu系统安装Redis 二. redis客户端介绍 三. 全局命令 3.1.GET和SET命令 3.2.KEYS&#xff08;生产环境禁止使用&#xff09; 3.3.EXISTS 3.4.DEL 3.5.EXPIRE 3.6.TTL 3.6.1.Redis的过期策略 3.6.2.基于优先级队列/堆的实现去实现定时器 3.6.3.定时器&a…

ubuntu22.04系统实践 linux基础入门命令(三) 用户管理命令

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 之所以推荐给大家使用&#xff0c;是因为上面的云主机目前是免费使用的…

DPDK中的TCP头部处理

1. TCP头部结构 TCP头部通常为20字节&#xff08;不含可选字段&#xff09;&#xff0c;每个字段占据固定的字节位置。以下是TCP头部的结构&#xff0c;按字节位置逐一说明&#xff1a;0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 …

开源在线客服系统Chatwoot配置文件

参考&#xff1a; https://developers.chatwoot.com/self-hosted/deployment/dockerhttps://developers.chatwoot.com/self-hosted/deployment/docker 1、.env 配置文件 # Learn about the various environment variables at # https://www.chatwoot.com/docs/self-hosted/co…

PHP进阶语法详解:命名空间、类型转换与文件操作

掌握了PHP面向对象编程的基础后&#xff0c;就可以深入学习命名空间、类型转换、文档注释、序列化以及文件操作等重要概念。 1、命名空间&#xff08;Namespace&#xff09; 命名空间是PHP 5.3引入的重要特性&#xff0c;它解决了类名、函数名和常量名冲突的问题&#xff0c;使…

Webpack 搭建 Vue3 脚手架详细步骤

创建一个新的 Vue 项目 1&#xff09;初始化项目目录 新建一个文件夹&#xff0c;或者使用以下指令 mkdir webpack-vue_demo cd webpack-vue_demo2&#xff09;初始化 npm 项目 npm init -y3&#xff09;安装 vue 和 webpack 相关依赖 npm install vue vue-loader vue-template…

【Git 误操作恢复指南】

Git 误操作恢复指南 适用场景&#xff1a;git reset --hard 误操作后的紧急恢复 风险等级&#xff1a;&#x1f534; 高风险 - 可能导致代码丢失 恢复成功率&#xff1a;95%&#xff08;CI/CD 环境下&#xff09; &#x1f6a8; 紧急情况概述 问题描述 在项目开发过程中&am…

Go语言 逃 逸 分 析

逃逸分析是什么 逃逸分析是编译器用于决定变量分配到堆上还是栈上的一种行为。一个变量是在堆上分配&#xff0c;还是在栈上分配&#xff0c;是经过编译器的逃逸分析之后得出的“结论”。Go 语言里编译器的逃逸分析&#xff1a;它是编译器执行静态代码分析后&#xff0c…

LeetCode算法日记 - Day 1: 移动零、复写零

目录 1. 移动零 1.1 思路解析 1.2 代码实现 2. 复写零 2.1 思路解析 2.2 代码实现 1. 移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请…

Odoo:免费开源的医疗器械行业解决方案

开源智造Odoo专家团队深知&#xff0c;作为医疗器械制造商&#xff0c;您的成功取决于制造卓越产品的能力。您必须遵循严密控制的流程&#xff0c;开发和制造出达到最严格质量标准的产品。“开源智造Odoo医疗器械行业解决方案”是为医疗器械制造商设计的全球企业资源规划(ERP)软…

Redis键值对中值的数据结构

前言 前面我们已经介绍了Redis的键值对存储管理的底层数据结构。如果不清楚的同志可以看我前面的博客 Redis数据库存储键值对的底层原理-CSDN博客 下面,我们来看一下Redis键值对中值的数据结构有那些叭 Redis常见的5种数据类型 string …