VM使用教程--SDK取图 视频笔记

2024-01-20 15:44

本文主要是介绍VM使用教程--SDK取图 视频笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本笔记均由海康机器人官网的V学院视频中记录所得,属于省流大师了[doge]

图像采集

图像采集包括1图像源,2多图采集,3输出图像,4缓存图像,5光源

1图像源

图像源包括本地图像,相机采图,SDK

本地图像:从本地图像中加载图像。

相机取图:从已配置的相机中获取图像。

SDK: 通过VM二次开发获取图像。

相机需要被其他软件占用等复杂情况,VM无法连接相机获取图像数据,为此,VM图像源支持二次开发情况下,利用SDK获取图像数据。

本期给大家带来在图像源中,选择SDK进行取图。

环境配置

在使用SDK取图前,我们需要进行二次开发所需的环境配置。

本文以VS2022为例。

第一步:新建项目。以C#为例,选择Windows窗体应用程序,框架:.NET Framework 4.8,创建项目。

第二步:设置属性。进入项目属性界面,进入生成窗口,平台目标:去掉32位勾选,保存。

右击项目名称,打开项目属性。在平台目标处勾选点首选32位。

如果在后期代码编写时出现环境问题报错,可以先检查自己是否去掉32位勾选。点击保存使相关设置生效。

第三步:添加引用。VisionMaster4.3.0\\Development\\V4.x\\ComControls\\Tool,选择项目路径,添加所需模块引用,重新加载引用。

属性设置完成后,打开VM安装路径,进入如下路径文件夹。VM4.3提供了快速应用工具,可以用于快速添加工具

选择刚刚创建好的项目路径。

我们可以自由选择所需添加的模块

此处,我们点击全部勾选,导入模式选择覆盖或者跳过同名。须等待进度条加载完毕。

点击退出,打开VS,点击全部重新加载。

第四步:添加控件

选择.NET Framework组件窗口,VisionMaster4.3.0\\Development\\V4.x\\ComControls\\Assemblylujin

在工具箱中,所有Windows窗体中右击。点击选择项,选择.NetFramework组件窗口,点击浏览,打开上述路径下的控件库

这里给大家列举VM控件对应的中英文。

VmFrontControl :前端运行界面控件

VmGlobalToolControl:全局模块控件

VmMainViewConfigControl:主界面控件。

VmParams:参数配置控件。

VmParamsConfigWithRederControl 参数配置带渲染控件

VmProcedureConfigControl :流程配置控件

VmRealTimeAcqControl: 时间配置控件

VmRenderControl:渲染控件

VmSingleModuleSetCongfigControl:独立Group控件

页面搭建

以上环境配置全部完成后,我们可以拖动控件去搭建一个简单的页面

首先,我们拖动GroupBox去搭建我们的整体框架。可以对该框架进行名称的修改。

接着,我们拖出Button来作为方案操作区,同样也可以修改名称,分别在流程显示区和图像显示区拖出对应控件。

一个简单的页面就搭建完成了。

接下来双击选择路径,进入对应界面进行程序编写。可以通过V学院二次开发视频学习代码。在结尾处我会放出VM二次开发的资料链接。

建议大家在回调函数中获取结果,不然高频运行环境可能会导致获取结果失败哦

 //选择路径private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "VM Sol File|*.sol*";DialogResult openFileRes = openFileDialog.ShowDialog();if(DialogResult.OK == openFileRes){textBox1.Text = openFileDialog.FileName;}listBox1.Items.Add("选择路径成功");listBox1.TopIndex = listBox1.Items.Count - 1;}//加载方案private void button2_Click(object sender, EventArgs e){try{VmSolution.Load(textBox1.Text);listBox1.Items.Add("方案加载成功");listBox1.TopIndex = listBox1.Items.Count - 1;}catch(VmException ex){MessageBox.Show(Convert.ToString(ex.errorCode, 16));}}// 执行方案private void button3_Click(object sender, EventArgs e){try{// SDK 取图ImageSourceModuleTool imageSource = (ImageSourceModuleTool)VmSolution.Instance["流程1.图像源1"];imageSource.SetImagePath("F:\\土豆\\土豆图片2\\111\\1.bmp");VmSolution.Instance.SyncRun();listBox1.Items.Add("方案执行一次成功");listBox1.TopIndex = listBox1.Items.Count - 1;VmProcedure vmProcess1 = (VmProcedure)VmSolution.Instance["流程1"];vmRenderControl1.ModuleSource = vmProcess1;string ocrResult = vmProcess1.ModuResult.GetOutputString("out").astStringVal[0].strValue;listBox1.Items.Add("字符识别结果" + ocrResult);listBox1.TopIndex = listBox1.Items.Count - 1;listBox1.TopIndex = listBox1.Items.Count - 1;}catch(VmException ex){MessageBox.Show(Convert.ToString(ex.errorCode, 16));}}

各部分控件代码编写完后,右键单击生成,生成成功后点击启动,vs工程搭建完成

在执行方案前需要输入图像数据,所以需要创建一个图像源的实例。

ImageSourceModuleTool imageSource = (ImageSourceModuleTool)VmSolution.Instance["流程1.图像源1"];

如果这里出现CS0246 未能找到类型或命名空间名"ImageSourceModuleTool"(是否缺少using指令或程序集引用?)  说明我们需要添加下列的引用,此处我们需要引用using ImageSourceModuleCs,对流程中的图像源,有两种方法输入图像数据。第一种是使用SetImageData, 为图像源输入图像数据,该方法只是单次有效。

第二种是SetImagePath

  imageSource.SetImagePath("F:\\土豆\\土豆图片2\\111\\1.bmp");

可以从本地指定路径输入图像。

本次演示第二种方式,文件路径可以在图像文件的属性中查看

SDK即撰写完成,此处引用流程1的图像源,若VM方案中存在多个流程,各按实际情况引用

这篇关于VM使用教程--SDK取图 视频笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626518

相关文章

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求