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


    目录

    前言

    运行效果

    开发环境

    基本概念

    步骤

            1.在VM算法平台中创建方案并测试通过。

            2.创建WPF项目。

            3.添加引用。(重点)

    以找圆为例:

    代码


    前言

            第一次使用海康视觉算法平台VisionMaster 4.3.0,项目中要使用这个平台进行视觉处理并获取结果。

    运行效果

    开发环境

            C#, WPF, vs2022, 海康视觉算法平台VisionMaster 4.3.0

    基本概念

            

    上图这些.sol为后缀的是vm的方案文件。

    打开方案文件,下图显示的是【方案】里的【流程】,一个方案可以有多个流程,一对多关系。

    下图中绿色圈出来叫【模块】

    步骤

            1.在VM算法平台中创建方案并测试通过。

                    相关的文章可以看本专栏以前的文单。下面也会给出链接。

            2.创建WPF项目。

            3.添加引用。(重点)

                    3.1 找到VM安装目录下的二开DLL文件目录。

                            我是安装在D盘的:D:\Program Files\VisionMaster4.3.0\Development\V4.x\ComControls\Assembly

                            大家的目录应该和我的差不多,可能只是盘符不一样。

                    3.2 在项目中添加引用

                            

            这么多DLL具体引用什么呢?下图

    这是基本引用。

    如果用到了其他模块要添加对应该的DLL文件。也很好找。根据VisionMaster算法平台SDK开发指南V4.3.1(.NET)相关的接口函数中看到的第一段名称同名。

    以找圆为例:

    上图中用红线标出来的就是DLL文件名。

    在用这个模块相关的类时要先添加引用。

    代码

            窗体代码 如果要添加VM相关控件。要在窗体中添加引用

    xmlns:vm="clr-namespace:VMControls.WPF.Release;assembly=VMControls.WPF.Release" 

    按钮代码

            获取方案结果

            

    1. /// <summary>
    2. /// 获取方案结果
    3. /// </summary>
    4. /// <param name="sender"></param>
    5. /// <param name="e"></param>
    6. private void btnGetResult_Click(object sender, RoutedEventArgs e)
    7. {
    8. //加载方案
    9. VmSolution.Load("F:/二期VM视觉学习/标定相机找圆心20240614.sol",string.Empty);
    10. //使用流程名称获取流程对象
    11. VmProcedure vmProcedure = (VmProcedure)VmSolution.Instance["流程1"];
    12. //运行一次流程才能拿到结果
    13. vmProcedure.SyncRun();
    14. IMVSCircleFindModuTool circleFitResult = (IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
    15. if (circleFitResult != null)
    16. {
    17. MessageBox.Show("获取到的圆心坐标:X:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.X.ToString("0.0000") + ",Y:" + circleFitResult.ModuResult.OutputCircle.CenterPoint.Y.ToString("0.0000"));
    18. }
    19. else
    20. {
    21. MessageBox.Show("失败");
    22. }
    23. }

    注意:加载方案时路径不建议写死。比较好的方法是将方案文件复制到bin目录下的一个固定文件夹里,再用获取程序当前路径的方式获取后再拼接。

    1. // 获取应用程序的执行目录
    2. string appDirectory = Assembly.GetExecutingAssembly().Location;
    3. appDirectory = appDirectory.Substring(0, appDirectory.LastIndexOf("\\") + 1);
    4. string imagePathRelative = "VmProCess/标定相机找圆心20240614.sol";

  • 相关阅读:
    C++中的堆和栈内存定义以及区别
    【BOOST C++ 18 数字处理】(3)Boost.MinMax
    C++11简单介绍
    【Python爬虫】安装requests库解决报错问题
    JavaScript(短信验证码)
    【操作系统】文件管理——文件的物理结构(个人笔记)
    上周热点回顾(3.27-4.2)
    saas化调研
    【代码收藏夹】Python实现PID算法
    11、电路综合-集总参数电路结构的S参数模型计算与Matlab
  • 原文地址:https://blog.csdn.net/cjh16606260986/article/details/139750853