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

}

参数配置区

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

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

相关推荐
曹牧5 小时前
C#:未被引用的函数
c#
上位机妹子10 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小羊没烦恼!12 小时前
jQuery1.5的改进细节
java·服务器·开发语言·前端·c#
下页、再停留13 小时前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
波力海苔夹心脆67514 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
kim15 小时前
一个人 + AI,用 WinForms 搓了个 376KB 的 Windows 便签:便签 / 截图 / 标注 / OCR / 待办全塞进去了
c#
hez201015 小时前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
宇卿.15 小时前
C#语句:
开发语言·c#
咕白m62516 小时前
使用 C# 将 TIFF 转换为 PDF
前端·c#
JQLvopkk17 小时前
HslCommunication,一个工具测遍所有 PLC
开发语言·人工智能·c#·交互