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

前言

第一次使用海康视觉算法平台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" 

按钮代码

获取方案结果

复制代码
/// <summary>
/// 获取方案结果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetResult_Click(object sender, RoutedEventArgs e)
{
    //加载方案
    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("失败");
    }
}

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

复制代码
// 获取应用程序的执行目录
string appDirectory = Assembly.GetExecutingAssembly().Location;
appDirectory = appDirectory.Substring(0, appDirectory.LastIndexOf("\\") + 1);
string imagePathRelative = "VmProCess/标定相机找圆心20240614.sol";
相关推荐
毕设源码-邱学长4 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°4 小时前
PHP框架漏洞
开发语言·php
玩泥巴的5 小时前
存储那么贵,何不白嫖飞书云文件空间
c#·.net·二次开发·飞书
炸膛坦客5 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
智者知已应修善业5 小时前
【proteus中lm339电压滞回比较器达到三角波转换成方波】2023-4-13
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
兑生6 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
551只玄猫6 小时前
新编大学德语1第三版笔记 第5课Essen und Trinken
笔记·学习笔记·德语·外语·德语a1·自学德语·新编大学德语
炸膛坦客7 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲7 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
不只会拍照的程序猿7 小时前
《嵌入式AI筑基笔记02:Python数据类型01,从C的“硬核”到Python的“包容”》
人工智能·笔记·python