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

}

参数配置区

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

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

相关推荐
Yueeyuee_2 小时前
【C#学习Day16笔记】XML文件、 事件Event 、Json数据
笔记·学习·c#
钢铁男儿6 小时前
C# 枚举器和迭代器(常见迭代器模式)
数据库·c#·迭代器模式
R-G-B14 小时前
【12】大恒相机SDK C#开发 ——多相机开发,枚举所有相机,并按配置文件中的相机顺序 将所有相机加入设备列表,以便于对每个指定的相机操作
c#·大恒相机sdk·大恒多相机开发·大恒多相机枚举·大恒多相机指定顺序
R-G-B14 小时前
【13】大恒相机SDK C#开发 —— Fom1中实时处理的8个图像 实时显示在Form2界面的 pictureBox中
c#·大恒相机sdk·图像实时显示在另一个界面
向宇it20 小时前
【unity小技巧】封装一套 Unity 的植物生长系统
游戏·unity·c#·游戏引擎
NFA晨曦1 天前
力扣刷题日常(7-8)
算法·leetcode·c#
踏上青云路1 天前
C# 闭包
java·前端·c#
86Eric1 天前
C# 入门教程(四)委托详解
c#·委托·多播委托
80岁小姑娘1 天前
.NET Core部署服务器
c#