首页 > 其他分享 >VisionPro 工具调用和工具组(ToolBlock)调用

VisionPro 工具调用和工具组(ToolBlock)调用

时间:2023-08-25 13:33:42浏览次数:55  
标签:调用 cogToolBlock2 VisionPro ToolBlock private item 工具

VisionPro是Cognex的机器视觉算法软件,通常的做法是使用VS做二次开发。
这里主要分享VisionPro中通过ToolBlock实现一个视觉检测,以及通过调用单个Tool实现一个视觉检测。
最终实现一个硬币数量检测以及坐标位置输出的应用:

使用ToolBlock的方式:

声明CogToolBlock类型的实例,并且序列化一个Vpp文件,编写vpp的过程这里不做赘述。

1 private CogToolBlock cogToolBlock2;
2 cogToolBlock2 = CogSerializer.LoadObjectFromFile(@"D:\C#Project\VisionPro_Control\VisionPro_Control\bin\x64\Debug\SampleVpp.vpp") as CogToolBlock;
3 //订阅ToolBlock的Ran事件,当ToolBlock执行完毕后程序会执行这个回调函数。
4 cogToolBlock2.Ran += new EventHandler(OnToolBlockRan);

由于这里使用的图片回放的方式,并非工业相机,所以需要申明一个CogImageFileTool类型,以获取图像或者图像集(idb、cdb)文件。(如果是接入工业相机,则需要声明CogAcqFifoTool采像工具,或者实现ICogFrameGrabber接口的方式从相机中取像。)

1 private CogImageFileTool cogImageFileTool2;
2 cogImageFileTool2.Operator.Open(@"F:\VPRO_Install\VisionPro\Images\coins.idb", CogImageFileModeConstants.Read);

为ToolBlock传入图像,并运行ToolBlock

1 //运行一次imageFileTool,则可以通过OutputImage属性获取到一张ICogImage类型的图片
2 cogImageFileTool2.Run();  
3 //将获取的图片赋值给ToolBlock的Image引脚,这里的Inputs是一个只读索引器
4 //可以通过["Image"]赋值,前提是"Image"没有被重命名。也可以通过[0]的方式赋值。
5 cogToolBlock2.Inputs["Image"].Value = cogImageFileTool2.OutputImage as CogImage8Grey;
6 //除了传图片给ToolBlock之外,还可以传参数进去,比如传入Pattern的查找概数限制。
7 cogToolBlock2.Inputs["SetCount"].Value = (int)nud_SetCount.Value;
8 //图片有了,参数有了,运行ToolBlock
9 cogToolBlock2.Run();

获取运行结果:

 1  private void OnToolBlockRan(object sender, EventArgs e)
 2  {
 3       //声明一个List集合获取ToolBlock的各种类型的运行结果
 4       List<DataObj> dataList = new List<DataObj>();
 5       //获取ToolBlock的结果输出引脚集合
 6       CogPMAlignResults resultList = (CogPMAlignResults)cogToolBlock2.Outputs["ResultList"].Value;
 7       //遍历,并添加到List集合中
 8       foreach (CogPMAlignResult item in resultList)
 9       {
10            dataList.Add(new DataObj(item.ID, item.GetPose().TranslationX, item.GetPose().TranslationY, item.GetPose().Rotation, item.GetPose().Scaling, item.Score));
11       }
12       //将获取到的集合赋值给DataGridView控件作为显示的图像源
13       dgv_DataList.DataSource = dataList;
14 
15       //一般来说这里要做界面图片显示部分,这里不再赘述
16  }

使用单工具调用的方式:

声明工具实例:工具vpp文件的编写这里不做赘述

1  private CogImageFileTool cogImageFileTool; //图像文件
2  private CogPMAlignTool cogPMAlignTool;        //PMAlign图像识别工具
3  private CogFixtureTool cogFixtureTool;     //位置修正工具
4  private CogBlobTool cogBlobTool;           //斑点工具
5 
6  cogImageFileTool = new CogImageFileTool();
7  cogPMAlignTool = new CogPMAlignTool();
8  cogImageFileTool.Operator.Open(@"F:\VPRO_Install\VisionPro\Images\bracket_std.idb",  CogImageFileModeConstants.Read);
9  cogPMAlignTool = CogSerializer.LoadObjectFromFile(toolVpp + "pmalign_tool.vpp") as CogPMAlignTool;

按顺序运行工具:

 1 //获取图像
 2 cogImageFileTool.Run();
 3 //将图像赋值给PMAlign工具,并运行
 4 cogPMAlignTool.InputImage = cogImageFileTool.OutputImage as CogImage8Grey;
 5 cogPMAlignTool.Run();
 6 //将图像赋值给定位修正工具,并获取PMAlign工具的线性转换矩阵
 7 cogFixtureTool.InputImage = cogImageFileTool.OutputImage as CogImage8Grey;
 8 cogFixtureTool.RunParams.UnfixturedFromFixturedTransform = cogPMAlignTool.Results[0].GetPose();
 9 cogFixtureTool.Run();
10 //将位置修正后的图像赋值给Blob工具,并运行
11 cogBlobTool.InputImage = cogFixtureTool.OutputImage as CogImage8Grey;
12 cogBlobTool.Run();

获取Blob工具的结果:

 1  //这里显示在CogDisplay控件上,当然也可以显示在CogRecordDisplay控件上
 2  cogDisplay1.StaticGraphics.Clear();
 3  cogDisplay1.Image = image;
 4  //遍历Blob的结果集合,然后添加到CogDisplay绘制,这里显示斑点中心|边框
 5  foreach (CogBlobResult item in cogBlobTool.Results.GetBlobs())
 6   {           
 7    //CogBlobResult包含了这个斑点的所有信息,包括CenterOfMassX,CenterOfMassY,Area等等。。
 8    cogDisplay1.StaticGraphics.Add(item.CreateResultGraphics(CogBlobResultGraphicConstants.Boundary | CogBlobResultGraphicConstants.CenterOfMass), "");
 9   }
10  cogDisplay1.Fit(true);

 

标签:调用,cogToolBlock2,VisionPro,ToolBlock,private,item,工具
From: https://www.cnblogs.com/ybqjymy/p/17656693.html

相关文章

  • Base64|MD5加密工具类
    骑士李四记录Base64Utilimportorg.apache.commons.codec.binary.Base64;publicclassBase64Util{ publicstaticStringencode(Stringinput){ if(null==input){ input=""; } byte[]base64=Base64.encodeBase64(input.getBytes()); try{ ......
  • 用python写了个简单ADB调试小工具
    整体框架基于python3.10编写,使用tkinter库作为程序主窗口GUI;用pyinstaller库打包.exe包,方便Windows系统直接双击使用;对安卓设备进行调试,管理应用,查看adblog,对设备root,remount,截屏,录屏,发送adb命令等。。。。。。。。PS:由于安卓系统安全限制原因,对于安卓10+设备存在不能录屏问题,暂......
  • VisionPro 多图像拼接简单操作
    应用场景:比如在一个视觉项目应用中,由于FOV过大,单相机像素精度不能满足预期,那么就需要分开布局多个相机拍摄。但是如果涉及到测量,定位,计数等类似应用的时候,图像拼接技术则显的非常重要。这里模拟四台相机分别拍摄一组二维码图像,然后将四张图拼接成为一张图,最后实现读码的功......
  • VisionPro CogPMAlignTool图像匹配工具的使用详解
    PMAlign工具:此工具可用于训练模板,然后使用在连续的输入图像中搜索模板。可指定执行模板训练或模板搜索时要使用的算法类型,并可选择利用图像还是利用形状模型集合创建已训练模板。输入图像内的可选搜索区域可限制模板搜索的范围。目的:这里主要分享一下,如何在一个ToolBlock中使......
  • phpcmsV9调用默认的分页样式
    //回复列表 publicfunctionganyanreply(){//点击后台-内容-留言管理,默认运行到这 $page=isset($_GET['page'])?intval($_GET['page']):1;//分页 $tablename=$this->db->db_tablepre.$MODEL[$modelid]['tablename'];// $this->db->......
  • 敏捷工具:助力快速迭代和高效交付
    ​随着软件开发行业的不断发展,敏捷开发方法逐渐成为了主流。Scrum作为敏捷开发中最具代表性的工具之一,其在流程设计、团队协作以及项目管理等方面发挥着重要作用。本文将深入探讨Scrum的优势以及如何运用Scrum提升团队效率与质量。一、Scrum敏捷开发工具的基本概念Scrum是一种......
  • 如何在leangoo免费敏捷工具中批量设置成员权限
    ​Leangoo领歌是一款永久免费的专业敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、缺陷管理、统计度量等。包括小型团队敏捷开发,规模化敏捷SAFe,ScrumofScrums大规模敏捷。其功能/解决问题的价值包括:1)能够支持多种场景,如:敏捷研发管理......
  • 【Java】SM2Utils(国密 SM2 工具类)
    基于bouncycastle实现国密SM2<!--引入bouncycastle--><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version></dependency>importlom......
  • AI绘画工具MJ新功能有点东西,小白也能轻松一键换装
    先看最终做出来的效果直接来干货吧。Midjourney,下面简称MJ1.局部重绘功能来袭就在前两天,MJ悄咪咪上线了这个被众人期待的新功能:局部重绘。对于那些追求创新和个性化的设计师来说,局部绘制不仅是一个实用的功能,更是一个能够深入挖掘创意的神器。通过这个功能,用户可以轻松地对......
  • VisionPro 颜色工具
    1.了解4种颜色工具的差异:ColorExtractor颜色提取工具,报告相应颜色像素个数ColorMatch颜色匹配工具,报告相应颜色匹配分数ColorSegmenter颜色分段工具,报告分段图像ColorCompositColorMatch复合颜色匹配工具,适应复合颜色纹理区分2.掌握4种颜色工具的基本操作方法。......