当前位置: 代码网 > it编程>编程语言>Asp.net > 海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果

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

2024年08月02日 Asp.net 我要评论
第一次使用海康视觉算法平台VisionMaster 4.3.0,项目中要使用这个平台进行视觉处理并获取结果。

目录

前言

运行效果

开发环境

基本概念

步骤

        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" 

按钮代码

        获取方案结果

        

/// <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";

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com