【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;

}

参数配置区

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

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

相关推荐
周杰伦fans3 小时前
C# CAD 二次开发:无需启动 AutoCAD 实现 DWG 转 DXF 的完整技术指南
开发语言·c#
影寂ldy3 小时前
C# 多态与函数重载(静态多态)
开发语言·c#
小满Autumn4 小时前
依赖注入设计模式速查手册
开发语言·c#·wpf·mvvm·依赖注入
z落落4 小时前
C# 静态成员 vs 非静态成员(调用规则+内存特点)+只读和常量 const常量 / readonly / static readonly 三者终极区别
java·开发语言·c#
Xin_ye100865 小时前
C# 零基础到精通教程 - WPF 专题三:高级控件与自定义控件
开发语言·c#·wpf
xiaoshuaishuai85 小时前
C# AvaloniaUI‌的IValueConverter
开发语言·c#
z落落6 小时前
C# 虚方法(virtual)与抽象方法 +区别+new方法隐藏 & override方法重写
java·开发语言·c#
xiaoshuaishuai86 小时前
C# Avalonia UI的ItemControl
开发语言·ui·c#
etp_7 小时前
C#异步编程
c#
Xin_ye100867 小时前
C# 零基础到精通教程 - WPF 深度专题:自定义布局与性能优化
开发语言·c#·wpf