目录

目标:检测工具器件圆圈处是否缺失,False:NG, TRUE:PASS

1.CogPMAlignTool目标定位

2.CogFixtureTool中心点坐标

3.CogBlobTool斑点工具

4.CogResultAnalysisTool

5.高级脚本判断

6.VS进行C#的界面要求展示


目标:检测工具器件圆圈处是否缺失,False:NG, TRUE:PASS

运用工具:1.CogPMAlignTool目标定位,2.CogFixtureTool中心点坐标,3.CogBlobTool斑点工具,4.CogResultAnalysisTool运算函数 5.文字显示/高级脚本编辑

1.CogPMAlignTool目标定位

抓取图像,训练角度调整可允许随意反转360度,训练

2.CogFixtureTool中心点坐标

获取坐标位置与GetPose进行对接,获取输入图像

3.CogBlobTool斑点工具

区域选择方形区域

运行查看结果显示(小孔测量)

其中ID2的面积不是我们所需要的地方所以需要进行过滤操作

下一步复制操作 (大孔操作)

极性为白底黑点,也可以理解为亮底黑面,运行查看结果

过滤掉没用的信息,ID2,4,3可以看到是没用的信息

根据性能比填充最小面积为200像素时最优,这里的小孔填充和大孔填充与Opencv很像,小孔填充是利用面积筛选的方式留下需要的信息,大孔填充则是利用类似泛洪填充,或者是闭运算(先膨胀后腐蚀)。

可以看到四个空位已经找到

接下来进行个数计算

4.CogResultAnalysisTool

紧接着需要添加终端,找到可以传输的double类型的数值,具体实现参考上一个VisionPro博客

接着是显示文字,因为需要判断,所以选择高级脚本编写

5.高级脚本判断

#region namespace imports
using System;
using System.Collections;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro3D;
using Cognex.VisionPro.PMAlign;
using Cognex.VisionPro.CalibFix;
using Cognex.VisionPro.Blob;
using Cognex.VisionPro.ResultsAnalysis;
#endregionpublic class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
{#region Private Member Variablesprivate Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;//1CogGraphicLabel myLabel = new CogGraphicLabel();#endregion/// <summary>/// Called when the parent tool is run./// Add code here to customize or replace the normal run behavior./// </summary>/// <param name="message">Sets the Message in the tool's RunStatus.</param>/// <param name="result">Sets the Result in the tool's RunStatus</param>/// <returns>True if the tool should run normally,///          False if GroupRun customizes run behavior</returns>public override bool GroupRun(ref string message, ref CogToolResultConstants result){// To let the execution stop in this script when a debugger is attached, uncomment the following lines.// #if DEBUG// if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break();// #endif// Run each tool using the RunTool functionforeach(ICogTool tool in mToolBlock.Tools)mToolBlock.RunTool(tool, ref message, ref result);//2CogResultsAnalysisTool c = new CogResultsAnalysisTool();c = mToolBlock.Tools["CogResultsAnalysisTool1"] as CogResultsAnalysisTool;if(c.Result.EvaluatedExpressions["Sum"].Value.ToString() == 4.ToString()){myLabel.SetXYText(0, 0, "PASS" + c.Result.EvaluatedExpressions["Sum"].Value.ToString());}else{myLabel.SetXYText(0, 0, "PASS" + c.Result.EvaluatedExpressions["Sum"].Value.ToString());}myLabel.Color = CogColorConstants.Red;myLabel.Font = new Font("宋体", 15);return false;}#region When the Current Run Record is Created/// <summary>/// Called when the current record may have changed and is being reconstructed/// </summary>/// <param name="currentRecord">/// The new currentRecord is available to be initialized or customized.</param>public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord){}#endregion#region When the Last Run Record is Created/// <summary>/// Called when the last run record may have changed and is being reconstructed/// </summary>/// <param name="lastRecord">/// The new last run record is available to be initialized or customized.</param>public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord){mToolBlock.AddGraphicToRunRecord(myLabel,lastRecord,"CogFixtureTool1.OutputImage","");}#endregion#region When the Script is Initialized/// <summary>/// Perform any initialization required by your script here/// </summary>/// <param name="host">The host tool</param>public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host){// DO NOT REMOVE - Call the base class implementation first - DO NOT REMOVEbase.Initialize(host);// Store a local copy of the script hostthis.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock)(host));}#endregion}

代码中有一处判断:

if(c.Result.EvaluatedExpressions["Sum"].Value.ToString() == 4.ToString())

这里进行了强转,string类型是不可以与int类型进行赋值比较

6.VS进行C#的界面要求展示

点击VisionPro Application模块

文件中添加刚刚保存好的 程序

一路next

在界面中添加输入字段

路径为Tools下CogToolBlock中output输出的内容的value值

选用VS执行C#

点击持续运行,qt界面中显示的胃实际检测孔洞数量

VisionPro斑点工具CogBlobTool相关推荐

  1. [VisionPro] CogBlobTool 检测斑点工具详解

    一.主要功能 检测斑片(脏污缺陷,既亮度值不同的区块的检测).输入图片,选择FindCircleTool找到的圆,Region(进行检测的区域)链接至上一级找圆工具区域.输出,Count找到的斑点数量 ...

  2. VisionPro FixtureCoord工具解释

    一.坐标空间 坐标空间是什么?坐标空间提供数学框架解释点的位置. 校准和定位 通过以下方法可以建立坐标空间:1)工具定位:2)FixtureNPointToNPoint工具.CalibNPointTo ...

  3. [VisionPro] CogPMAlignTool 工具详解

    一.主要功能 CogPMAlignTool作为visionpro的模板定位功能.用于图像的特征的初步定位,为之后的CogFixtureTool(重定位模板匹配的图像特征,将图像转正).CogAffin ...

  4. [VisionPro] CogFixtureTool 工具详解

    一.主要功能 调用模板匹配得到的2D转换关系,在切割下的图片中建立一个定位坐标系.一般与CogAffineTransformTools联合使用. InputImage:输入的原图 Transform: ...

  5. [VisionPro] CogAffineTransformTool 工具详解

    一.主要功能 获取一个图像的仿射区域,将InputImage进行切割,得到新的outputImage.用于将需要处理的区域以模板匹配的坐标轴转正.其是在Fixture的输出图片上进行切割.该区域每个点 ...

  6. VisionPro工具小结

    哔哩哔哩上VISIONPRO教程-快学 VisionPro 系列教程 (工业机器视觉应用) 稍进阶教程 P6 CogPMAlignTool: 定位工具,基于边缘特征模板进行定位,而不是基于像素特征模块 ...

  7. VisionPro工具与命名空间对照表

    VisionPro工具对应的命名空间 项次 分类 名称 命名空间 1 无分类    CogAcqFifoTool Cognex.VisionPro.CogAcqFifoTool 2      CogB ...

  8. Halcon和Visionpro的对比

    Halcon和Visionpro的对比 1. 概括的对比 1.1 Halcon优势 Halcon有着更加低廉的Lisence,并且提供更好.更强大的2D和3D的视觉软件库: Halcon支持的视觉图像 ...

  9. visionpro的无脚本和高级脚本(你要偷偷的卷,然后惊艳所有人)

    目录 推荐B站视频: visionpro的工具测量无脚本显示: visionpro的工具测量高级脚本显示: 首先说明高级脚本高级在哪里: 引言:多多学习,卷死别人 推荐B站视频: 工业机器视觉 大家别 ...

最新文章

  1. 传统数据仓库架构与Hadoop的区别
  2. [转载]VS2005中ifstream不能读中文路径文件的bug
  3. 一种新的在线学习的方法:能够克服单人多任务学习的困难!
  4. android theme 使用方法,Android入门之Style与Theme用法实例解析
  5. oracle 11g数据库数据操作(亲测)
  6. tomcat的class加载的优先顺序
  7. 树形控件(CTreeCtrl和CTreeView)
  8. c3p0配置及泄露问题
  9. [Leetcode]设计链表
  10. 【2019徐州网络赛:G】Colorful String(回文树+二进制统计回文串内不同字母数技巧)
  11. 服务器虚拟盘怎么设置,服务器虚拟内存设置在什么盘
  12. 基于javaweb+jsp的健康体检信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
  13. vue2+vant2搭建H5框架
  14. npm ERR! code EINTEGRITY npm! ERR! shal-
  15. IOS开源项目Telegram初试
  16. vios support for power
  17. python爬虫之爬取招聘岗位信息
  18. C++Primer 第10章lambda表达式
  19. 如果VxRail要发朋友圈
  20. 【阿里云·云原生架构·白皮书】保姆级解读 一、 云原生架构定义

热门文章

  1. 查询电话联系人(包括sim卡)
  2. scau 10306 Prison break
  3. 开发一个分销小程序需要多少钱?
  4. 墙裂推荐7款办公必备软件,免费、小巧、好用
  5. txt文本怎么去除重复项
  6. Oracle SQL前三行,后三行
  7. 哥白尼计划(Copernicus initiative)
  8. Flutter 自定义组件实战
  9. 如何使用R语言拟合ANOVA模型
  10. 如何通过mac微信版把文件传到手机上?