【05】VM二次开发——模块参数配置--带渲染/不带渲染(WinForm界面调用 模块参数配置)

文章目录

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

模块参数配置

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

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

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

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

在Form1窗口,添加GroupBox 和VmParamsConfigWithRenderControl控件;

2 配置代码

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

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

第一行代码为实例化一个模块;

需要通过字符识别类来定义并实例化一个字符识别模块对象;

c 复制代码
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;
    //通过此代码即可获取到格式化中订阅的字符识别结果strValue
    string 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 代码及演示效果

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

c 复制代码
  vmParamsConfigControl1.ModuleSource = ocrTool;//不带渲染的参数配置控件
c 复制代码
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;
    //通过此代码即可获取到格式化中订阅的字符识别结果strValue
    string 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;

}

参数配置区

上方是,不带渲染的参数配置控件

下方是, 带渲染的参数配置控件(渲染就是显示处理的图像)

相关推荐
Lost of 程序猿5 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net
点纭8 小时前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
用户788477316349 小时前
用 .NET MAUI 一套 C# 同时出 Windows 和 Android:哪些是真能共享,哪些是 marketing
c#
Lost of 程序猿10 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
林川~0120 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
He BianGu1 天前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_04271 天前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
tang_04271 天前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列
A_nanda1 天前
C# 界面卡顿:从定位到根治
c#
2501_930707781 天前
使用C#代码为新创建的 Word 文档创建目录
c#·word