VM4.3 二次开发02 方案加载、执行及显示

效果

这是二次开发的第二个文章,所以不重复说明环境配置相关的内容。如果不懂的可以看本专栏的上一个文章。

海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果-CSDN博客

界面代码

<Window x:Class="VmTestWpf.App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vm="clr-namespace:VMControls.WPF.Release;assembly=VMControls.WPF.Release" 
        xmlns:local="clr-namespace:VmTestWpf.App"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="900">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="45"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="300"/>
        </Grid.ColumnDefinitions>
        <!--显示方案执行结果-->
        <vm:VmRenderControl Grid.Row="0" Grid.Column="0" 
                     x:Name="vrcRender" />
        
        <!--操作按钮-->
        <WrapPanel Grid.Row="1" Grid.Column="0" >
            <Button x:Name="btnLoad" Click="btnLoad_Click" 
                Content="加载方案" Width="100" Height="35" HorizontalAlignment="Left"/>
            <Button Grid.Row="1" Grid.Column="1" Name="btnRun" Click="btnRun_Click" 
                Content="运行" Width="80" Height="35" HorizontalAlignment="Left"
                    Margin="5"/>
        </WrapPanel>
        
        <!--消息显示-->
        <ListBox Grid.Row="1" Grid.Column="1" x:Name="lbRunResult">            
        </ListBox>
    </Grid>
</Window>

按钮代码

注意命名空间的引用

using VM.Core;
using VM.PlatformSDKCS;
using VMControls.Interface;

using IMVSCircleFindModuCs;

using IMVSCircleFindModuCs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VM.Core;
using VM.PlatformSDKCS;
using VMControls.Interface;

namespace VmTestWpf.App
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindow_Loaded;
        }

        /// <summary>
        /// 流程对象
        /// </summary>
        VmProcedure _vmProcedure;

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            
        }

        /// <summary>
        /// 加载方案
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLoad_Click(object sender, RoutedEventArgs e)
        {
            //加载方案
            VmSolution.Load("F:/二期VM视觉学习/标定相机找圆心20240614.sol", string.Empty);

            //使用流程名称获取流程对象
            _vmProcedure = (VmProcedure)VmSolution.Instance["流程1"];
            var msg = "方案加载成功";
            lbRunResult.Items.Insert(0, msg);
        }

        /// <summary>
        /// 获取方案结果
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGetResult_Click(object sender, RoutedEventArgs e)
        {
            // 获取应用程序的执行目录
            //string appDirectory = Assembly.GetExecutingAssembly().Location;
            //appDirectory = appDirectory.Substring(0, appDirectory.LastIndexOf("\\") + 1);
            //string imagePathRelative = "TestProCess/01/12345.sol";

            //加载方案
            VmSolution.Load("F:/二期VM视觉学习/标定相机找圆心20240614.sol", string.Empty);

            //使用流程名称获取流程对象
            VmProcedure vmProcedure = (VmProcedure)VmSolution.Instance["流程1"];

            //运行一次流程才能拿到结果
            vmProcedure.SyncRun();

            IMVSCircleFindModuTool circleFitResult = (IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
            if (circleFitResult != null)
            {
                MessageBox.Show("获取到的圆心坐标:X:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.X.ToString("0.0000") + ",Y:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.Y.ToString("0.0000"));
            }
            else
            {
                MessageBox.Show("失败");
            }
        }

        /// <summary>
        /// 运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRun_Click(object sender, RoutedEventArgs e)
        {
            if (_vmProcedure != null)
            {
                //使用流程名称获取流程对象
                _vmProcedure = (VmProcedure)VmSolution.Instance["流程1"];

                //运行一次流程才能拿到结果
                //_vmProcedure.SyncRun();
                _vmProcedure.Run();
                //获取 圆查找1 结果
                IMVSCircleFindModuTool circleFitResult = (IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
                if (circleFitResult != null)
                {
                    vrcRender.ModuleSource = circleFitResult;
                    var msg = "获取到的圆心坐标:X:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.X.ToString("0.0000") + ",Y:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.Y.ToString("0.0000");
                    lbRunResult.Items.Insert(0, msg);
                    //MessageBox.Show("获取到的圆心坐标:X:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.X.ToString("0.0000") + ",Y:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.Y.ToString("0.0000"));
                }
                else
                {
                    MessageBox.Show("失败");
                }
            }
            else
            {
                MessageBox.Show("流程加载失败");
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717790.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线程池吞掉异常的case:源码阅读与解决方法

1. 问题背景 有一天给同事CR&#xff0c;看到一段这样的代码 try {for (param : params) {//并发处理&#xff0c;func无返回值ThreadPool.submit(func(param));} } catch (Exception e) {log.info("func抛异常啦,参数是:{}", param) } 我&#xff1a;你这段代码是…

【idea】gradle多模块构建项目内存溢出终止问题解决

背景 idea构建多模块项目&#xff0c;构建报错 Daemon is stopping immediately JVM garbage collector thrashing and after running out of JVM memory 解决 进到下图目录下 在文件管理中进入上面目录添加gradle.properties文件&#xff0c;内容如下 org.gradle.jvmargs-…

vue项目——前端CryptoJS加密、解密

1、vue项目需要安装CryptoJS安装包 npm install crypto-js 2、在项目中引入CryptoJS import CryptoJS from crypto-js 3、使用&#xff0c;代码如下 // 此处key为16进制let key jiajiajiajiajiajiajiajia;console.log(密钥&#xff1a;, key);// key格式化处理key Crypt…

检索增强生成(RAG)的挑战与优化措施

如何理解检索增强生成&#xff08;RAG&#xff09; 简单来说&#xff0c;RAG就是让LLM通过外部知识源获取额外信息&#xff0c;从而生成更准确、更符合上下文的答案&#xff0c;并减少错误信息&#xff08;或称为“幻觉”&#xff09;的产生。 我们都知道&#xff0c;最先进的…

深度学习 --- stanford cs231学习笔记四(神经网络的几大重要组成部分)

训练神经网络1 1&#xff0c;激活函数&#xff08;activation functions&#xff09; 激活函数是神经网络之于线性分类器的最大进步&#xff0c;最大贡献&#xff0c;即&#xff0c;引入了非线性。 1&#xff0c;1 Sigmoid sigmoid函数的性质&#xff1a; 结合指数函数的图像可…

pycharm git配置

PyCharm 是一个强大的集成开发环境(IDE),它内置了 Git 集成,使得版本控制变得非常方便。以下是 PyCharm 中配置 Git 的基本步骤: 安装Git: 在开始之前,请确保已经在您的系统上安装了 Git。您可以通过官方网站下载并安装 Git。本系统用的是Git-2.29.2.2-64-bit 。 打开PyC…

离散数学复习

1.关系的介绍和性质 &#xff08;1&#xff09;序偶和笛卡尔积 两个元素按照一定的顺序组成的二元组就是序偶&#xff0c;使用尖括号进行表示&#xff0c;尖括号里面的元素一般都是有顺序的&#xff1b; 笛卡尔积就是有两个集合&#xff0c;从第一个集合里面选择一个元素&am…

Python对象复制竟然有这么多种方式,赶紧学起来!

目录 1、浅拷贝:copy模块的copy()函数 📋 1.1 浅拷贝原理揭秘 1.2 实战演示:列表与字典的浅拷贝 列表浅拷贝示例 字典浅拷贝示例 1.3 注意事项:共享引用与独立对象 2、深拷贝:copy模块的deepcopy()函数 📌 2.1 深拷贝实现机制解析 2.2 深拷贝优势分析 2.3 深度…

DoIP——step2:车辆发现

文章目录 前言一、IP地址配置1.1 AutoIP1.2 DHCP1.3 DoIP实体的IP地址配置流程二、车辆发现车辆声明报文内容如下:前言 完成诊断设备到车辆的物理连接并通过激活线使能诊断连接后边缘节点将会将连接状态传递至应用层,在开始车辆发现过程之前,需要先进行各自的IP地址配置,获…

“Redis中的持久化:深入理解RDB与AOF机制“

目录 # 概念 1. RDB持久化 1.1 备份是如何执行的&#xff08;RDB过程&#xff09; 1.2 配置文件信息 1.3 RDB持久化操作 1.4 RDB优势 1.5 RDB劣势 1.6 RDB做备份 2. AOF持久化 2.1 AOF开启及使用 2.2 异常恢复 2.3 配置文件操作 2.4 AOF持久化流程 2.5 优点 2.6…

基于Unet++在kaggle—2018dsb数据集上实现图像分割

目录 1. 作者介绍2. 理论知识介绍2.1 Unet模型介绍 3. 实验过程3.1 数据集介绍3.2 代码实现3.3 结果 4. 参考链接 1. 作者介绍 郭冠群&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究方向&#xff1a;机器视觉与人工智能 电子邮件&#xff…

代发考生战报:HCIP H12-725安全变题了

代发考生战报&#xff1a;HCIP H12-725安全变题了&#xff0c;幸好当天找客服办理的包过服务&#xff0c;听同考场的考生说&#xff0c;考试全是新题&#xff0c;只有1-2个是题库上的题&#xff0c;自己考的都考挂了&#xff0c;帮我答题的老师很厉害&#xff0c;很赞&#xff…

CesiumJS【Basic】- #006 浏览器控制台查看位置角度

文章目录 浏览器控制台查看位置角度1 目标 浏览器控制台查看位置角度 1 目标 浏览器控制台查看位置角度

探索国内首家文生软件平台:码上飞CodeFlying

前言&#xff1a; AIGC (AI Generated Content) 作为人工智能领域最火热的分支之一&#xff0c;以ChatGPT等大模型为代表&#xff0c;迅速掀起了全球热潮。 国内的大厂如阿里、字节跳动、百度、腾讯等也纷纷推出了自己的大模型产品&#xff0c;涵盖了文生文、文生图、文生视频…

计算机网络(6) UDP协议

一.UDP数据报格式 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种简单的传输层协议&#xff0c;与TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;相比&#xff0c;UDP提供一种无连接、不可靠的数据传…

Python云实例初始化和配置的工具库之cloud-init使用详解

概要 在云计算环境中,自动化配置和管理实例是非常重要的任务。cloud-init 是一个用于云实例初始化和配置的工具,广泛应用于各种云服务提供商(如 AWS、Azure、GCP 等)的实例启动过程。通过 cloud-init,用户可以在实例启动时自动执行脚本、安装软件包、配置网络等。本文将详…

Python学习打卡:day08

day8 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day858、数据容器(序列)的切片序列的常用操作——切片 59、序列的切片课后练习60、集合的定义和操作集合的定义集合的操作添加新元素移除元素从集合…

⭐ ▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch3 贝尔曼最优公式 【压缩映射定理】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书&#xff0c;补充 【下载&#xff1a;本章 PDF 电子书 GitHub 界面链接】 [又看了一遍视频] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链…

软考系统规划与管理师伴读脑图第9章

周末发系统规划与管理师的试听视频&#xff0c;占用了发送次数&#xff0c;所以上周的脑图推迟了今天发出。 不知不觉已经发到了第9章&#xff0c;感叹这就是坚持积累下来的力量&#xff0c;其实考试也是一样的道理。

Nginx 高级应用

目录 一.使用alias实现虚拟目录 二. 通过stub_status模块监控nginx的工作状态 三. 使用limit_rate限制客户端传输数据的速度 四. nginx虚拟主机配置 1.基于端口的虚拟主机 2. 基于IP的虚拟主机 3. 基于域名的虚拟主机 nginx配置文件&#xff1a; /…