【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

这篇具有很好参考价值的文章主要介绍了【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

VisionMaster(后简称VM)作为一款功能强大的工业图像算法平台,可对工业中遇到的各种图像进行处理,同时拥有性能强大的算子以及丰富的教学例程,作为图像处理的通用平台是非常不错的选择。但Vision Master软件依旧有不足,就是难以配置复杂或定制化的图形界面,故需要结合其他软件联合编程开发。因此,VM同步推出面向对象编程的平台SDK(Software Development Kit)开发。VM SDK开发理念是以极少的代码实现视觉软件的集成开发,从而降低视觉开发人员对视觉处理逻辑代码的维护成本。本文将详细介绍如何使用VM SDK联合C#二次开发。

一、VM SDK(4.2版本)介绍

VM算法平台和VM SDK的区别
VM算法平台是海康机器人自主开发的机器视觉软件,致力于为客户提供快速搭建视觉应用、解决视觉检测难题的算法工具,能满足视觉定位、尺寸测量、缺陷检测以及信息识别等机器视觉应用。
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例
VM SDK是基于VM算法平台中的方案、流程和模块工具等进行对象级封装的二次开发工具包,用户可通过VM SDK提供的方案、流程和模块工具中各个对象的功能接口进行相应的数据交互与运行控制。同时提供相应的流程配置控件、参数配置控件、渲染控件、全局工具控件以及前端运行界面控件等,方便进行方案编辑、参数配置以及渲染展示,便于灵活进行开发,并扩展机器视觉应用。VM SDK在安装VM软件后会同步安装在安装路径下的Development文件夹下,并提供了开发文档及丰富的二次开发示例。
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

二、开发步骤

VM SDK开发的载体是方案(VmSolution),且同一台电脑同一时刻只支持一个二次开发进程运行,因此其二次开发是都是围绕VmSolution这个单例开发的,大概开发思路如下图(参考VM二次开发文档)所示:
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

2.1 方案加载

VM二次开发方案加载: 方案后缀为sol(一般建议在VM软件中创建好算法方案,在二次开发中调用),路径为绝对路径。

VmSolution.Load(“方案路径”);

加载完成后就可以对方案进行操作了,当然VM SDK也提供了用来显示方案的控件(VmProcedureConfigControl 流程配置控件和VmMainViewCongfigControl 主界面控件),无需绑定,只要界面中有这两个中任意控件,加载完方案后会自动绑定显示,如图所示为实际加载效果。
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

2.2 参数修改

VM二次开发为修改算法参数提供了两种方式:
2.2.1 方式1: 用自带的参数配置控件( VmParamsConfigControl 参数配置控件、VmParamsConfigWithRenderControl 参数配置带渲染控件)调参。
控件绑定模块代码示例:

IMVSCircleFindModuCs.IMVSCircleFindModuTool circleFindTool = (IMVSCircleFindModuCs.IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
vmParamsConfigWithRenderControl1.ModuleSource = circleFindTool;

绑定完成后,控件就会自动填充当前模块的参数配置信息,然后进行修改即可(注意这里修改的参数并不会实时保存到方案文件里,需要调用方案保存接口才会保存)。
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例
2.2.2 方式2: 调用工具类的模块参数对象(ModuParams)提供的接口或Public属性(可以在开发文档中查阅、也可以在VS中进入相关参数类的定义中进行查阅)来修改。示例代码如下:

IMVSCircleFindModuCs.IMVSCircleFindModuTool circleFindTool = (IMVSCircleFindModuCs.IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
circleFindTool.ModuParams.RadNum = 10;

2.3 流程执行

VM算法执行方式有多种:二次开发仍然支持VM中配置的硬触发和通讯触发,同时提供了Run接口来支持软触发。软触发示例代码如下:

VmSolution.Instance.Run();

上述的方案Run接口会触发所有流程同时执行一次,当然也提供了单个控制流程/模块执行的方式,需要先实例化需要Run的流程/模块对象,然后调用该对象的Run接口即可触发流程/模块执行,示例代码如下:

VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];
vmProcess1.Run();
var circleFind = (IMVSCirrleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
circleFind.Run();

2.4 结果获取

2.4.1 渲染结果获取:
方式1: VM SDK提供了渲染控件(vmRemderControl),可以通过给该控件直接绑定流程/模块对象资源来实现相应对象显示设置配置的渲染。示例代码如下:

VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];
vmRenderControl1.ModuleSource = vmProcess1;
//绑定模块渲染结果
Var circleFind = (IMVSCircleFindModuTool) VmSolution.Instance["流程1.圆查找1"];
vmRenderControl1.ModuleSource = circleFind;

需要注意的是:这里的渲染绑定是动态绑定,只需在流程/方案执行前绑定一次即可,后续流程/方案运行时渲染界面会实时更新对应绑定对象的渲染结果(对应的是模块/流程的显示设置信息:图像、形状信息和文字信息)。
【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例
方式2: 自己获取图形或文字数据在VM SDK提供的渲染控件上绘制。示例代码如下:

//设置图像
var imageSource = (ImageSourceModuleCs.ImageSourceModuleTool)VmSolution.Instance["流程1.图像源1"];
vmRenderControl1.ModuleSource = imageSource;
//自定义图形
VMControls.WPF.LineEx line = new VMControls.WPF.LineEx();
line.StartPointX = 100;
line.StartPointY = 100;
line.EndPointX = 300;
line.EndPointY = 300;
line.StrokeThickness = 10;
vmRenderControl1.DrawShape(line);
//自定义文本
VMControls.WPF.TextEx text = new VMControls.WPF.TextEx();
text.Content = "欢迎使用VM4.2二次开发!";
text.FontSize = 30;
text.Position = new System.Windows.Point(100, 100);
text.Height = 100;
text.Width = 100;
text.Stroke = "#FF0000";//设置颜色
text.StrokeThickness = 10;
vmRenderControl1.DrawShape(text);

2.4.2 数据结果获取: 需要通过对应工具类的结果对象类获取。
方式1: 可以在搭建流程时将流程内的模块结果都绑定到流程的输出设置里,然后统一使用流程对象提供的结果获取接口进行获取。部分接口示例如下:

//通过流程获取结果
VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];
string ocrResult = vmProcess1.ModuResult.GetOutputString("out").astStringVal[0].strValue;
string ocrNum = vmProcess1.ModuResult.GetOutputInt("out0").pIntVal[0].ToString();

方式2: 通过每个工具类的模块结果对象(ModuResult)获取,示例代码如下:

//通过模块获取结果
IMVSOcrModuCs.IMVSOcrModuTool ocrTool = (IMVSOcrModuCs.IMVSOcrModuTool)VmSolution.Instance["流程1.字符识别1"];
string ocrScore1 = ocrTool.ModuResult.CharNum.ToString();

总结

本文递进式地介绍VM SDK的使用,同时VM SDK安装包里提供了大量能使我们快速上手的开发文档及示例Demo,用户也可以参考官方提供的开发资源,利用好这些资源基本能实现大部分的开发需求。
附开发资源路径:

  • 开发手册:VisionMaster4.2.0\Development\V4.x\Documentations
  • 开发案例:VisionMaster4.2.0\Development\V4.x\Samples(…\C#\ApplicationDemo为新增的应用案例,包含定位引导、OCR识别和深度学习分类案例)
  • V社区(VM开发者技术园地)链接:https://www.v-club.com/home
  • 资料荟萃链接:https://one.hikvision.com/#/link/XcwZ3QdfwYzO8f6TqlI3 提取密码:kGHn(包含开发教程、软件Demo、讲解视频和问答集FAQ,无需注册,直接下载)
    最后附上一张VM二次开发的案例效果图:
    【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

文章来源地址https://www.toymoban.com/news/detail-453269.html

到了这里,关于【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dalsa线扫相机SDK二次开发

    要用回调函数取图:

    2024年02月12日
    浏览(45)
  • 基于海康威视的SDK实现二次开发

    因为网上关于海康威视SDK这块的开发资源比较少,自己也是一步一步摸索过来,知道那种痛苦, 所以把自己的一些过来人的经验写出来供大家学习参考 进入海康威视官网 下载你所需要的SDK开发包(这里我就用windows来作为案列) 下载完SDK解压 里面有开发文档和SDK的动态库文

    2024年04月10日
    浏览(46)
  • 海康威视相机SDK二次开发(JAVA语言)

    前言 有个项目需要使用java程序读取海康威视的相机图片。相机通过以太网连接服务器,部署在服务器上的java程序将相机拍摄的画面保存在指定路径下。 海康威视提供了sdk开发包,可以在官网中下载,windows和linux系统都有。但是开发包中给出的示例代码,无法满足实际需要,

    2024年04月29日
    浏览(51)
  • 【记录】海康相机(SDK)二次开发时的错误码

    在进行海康sdk二次开发的时候,经常碰到各种错误,遂结合官方文档和广大网友的一些经验,把这些错误码记录一下,方便查找。笔者使用的SDK版本是HCNetSDKV6.1.9.4。 错误类型 错误码 错误信息 NET_DVR_NOERROR 0 没有错误。 NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名

    2024年04月08日
    浏览(84)
  • Linux下海康威视工业相机的SDK二次开发

    1.1安装包的下载和解压 去 官网 下载两个软件安装,分别是客户端和开发环境。 (这里我们下载V2.1.1(Linux)和Runtime组件包(Linux)): 工业相机文档/安装包中的不同安装版本安装包里有各个系统及arm开发板使用的安装包,选择相应的安装包进行安装 (这里我们选择最后一

    2024年02月09日
    浏览(41)
  • 【HIKROBOT】海康机器人:工业相机SDK二次开发

    海康机器人官网链接:https://www.hikrobotics.com/cn 根据购买设备的型号下载用户说明书 笔者实验室购买了两款,一款GigE网口接口的,一款USB接口 GigE网口接口 USB接口:MV-CA050-20UC 服务支持”“下载中心”“机器视觉”中下载MVS客户端安装包及SDK开发包。 1.1.1 Ubuntu18.04系统安装 下

    2024年02月05日
    浏览(62)
  • 巴斯勒相机基于SDK 二次开发C++程序

    巴斯勒相机在VS中如何进行连接调用呢(软触发调用) 1.查找巴斯勒相机网口; 2.调用巴斯勒相机提供的接口,连接巴斯勒相机; 3.初始化相机; (安装巴斯勒相机软件) 其他引用第三方库以及对应头文件 链接:https://pan.quark.cn/s/71bb1b3e0dad 提取码:JfM9

    2024年04月14日
    浏览(60)
  • WPS二次开发系列:WPS SDK初始化

    本文将详细介绍WPS SDK初始化,帮您能够更好的在项目中接入WPS SDK实现自己的应用和WPS应用进行通信交互。 向WPS官方发送邮件申请,邮件格式如下 邮件模板: 发起人 :有需要申请接入WPS移动端的企业或者个人 邮件主题: XXX公司XXX项目---WPS Android端 SDK二次开发集成申请 邮件

    2024年04月16日
    浏览(40)
  • 网页CAD二次开发(在线CAD SDK)用到的数学库

    在CAD二次开发中, 正确的使用数学库是十分重要的, 我们不需要会很多数学知识, 只要会普通的四则运算和调用mxcad提供的api即可,通过[快速入门]了解了打开图纸后,如果要对图形进行处理,就需要各种计算, mxcad提供了一些类来参与计算或者表示一些数据结构,相关的API查询

    2024年02月20日
    浏览(45)
  • 大华SDK+JAVA+4g网络摄像头进行二次开发

    监控,相信大家都不陌生。现在的监控技术发展迅速,国内以海康威视为首的智能视频监控提供商也层出不穷。现在,这些提供商都已经提供了相应的SDK以及API接口,能够很好的支撑我们进行摄像机的二次开发工作。相信大家都有接触过这么一个需求:利用手机可以自己进行

    2024年01月20日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包