VisionPro斑点工具CogBlobTool
目录
目标:检测工具器件圆圈处是否缺失,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相关推荐
- [VisionPro] CogBlobTool 检测斑点工具详解
一.主要功能 检测斑片(脏污缺陷,既亮度值不同的区块的检测).输入图片,选择FindCircleTool找到的圆,Region(进行检测的区域)链接至上一级找圆工具区域.输出,Count找到的斑点数量 ...
- VisionPro FixtureCoord工具解释
一.坐标空间 坐标空间是什么?坐标空间提供数学框架解释点的位置. 校准和定位 通过以下方法可以建立坐标空间:1)工具定位:2)FixtureNPointToNPoint工具.CalibNPointTo ...
- [VisionPro] CogPMAlignTool 工具详解
一.主要功能 CogPMAlignTool作为visionpro的模板定位功能.用于图像的特征的初步定位,为之后的CogFixtureTool(重定位模板匹配的图像特征,将图像转正).CogAffin ...
- [VisionPro] CogFixtureTool 工具详解
一.主要功能 调用模板匹配得到的2D转换关系,在切割下的图片中建立一个定位坐标系.一般与CogAffineTransformTools联合使用. InputImage:输入的原图 Transform: ...
- [VisionPro] CogAffineTransformTool 工具详解
一.主要功能 获取一个图像的仿射区域,将InputImage进行切割,得到新的outputImage.用于将需要处理的区域以模板匹配的坐标轴转正.其是在Fixture的输出图片上进行切割.该区域每个点 ...
- VisionPro工具小结
哔哩哔哩上VISIONPRO教程-快学 VisionPro 系列教程 (工业机器视觉应用) 稍进阶教程 P6 CogPMAlignTool: 定位工具,基于边缘特征模板进行定位,而不是基于像素特征模块 ...
- VisionPro工具与命名空间对照表
VisionPro工具对应的命名空间 项次 分类 名称 命名空间 1 无分类 CogAcqFifoTool Cognex.VisionPro.CogAcqFifoTool 2 CogB ...
- Halcon和Visionpro的对比
Halcon和Visionpro的对比 1. 概括的对比 1.1 Halcon优势 Halcon有着更加低廉的Lisence,并且提供更好.更强大的2D和3D的视觉软件库: Halcon支持的视觉图像 ...
- visionpro的无脚本和高级脚本(你要偷偷的卷,然后惊艳所有人)
目录 推荐B站视频: visionpro的工具测量无脚本显示: visionpro的工具测量高级脚本显示: 首先说明高级脚本高级在哪里: 引言:多多学习,卷死别人 推荐B站视频: 工业机器视觉 大家别 ...
最新文章
- 传统数据仓库架构与Hadoop的区别
- [转载]VS2005中ifstream不能读中文路径文件的bug
- 一种新的在线学习的方法:能够克服单人多任务学习的困难!
- android theme 使用方法,Android入门之Style与Theme用法实例解析
- oracle 11g数据库数据操作(亲测)
- tomcat的class加载的优先顺序
- 树形控件(CTreeCtrl和CTreeView)
- c3p0配置及泄露问题
- [Leetcode]设计链表
- 【2019徐州网络赛:G】Colorful String(回文树+二进制统计回文串内不同字母数技巧)
- 服务器虚拟盘怎么设置,服务器虚拟内存设置在什么盘
- 基于javaweb+jsp的健康体检信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
- vue2+vant2搭建H5框架
- npm ERR! code EINTEGRITY npm! ERR! shal-
- IOS开源项目Telegram初试
- vios support for power
- python爬虫之爬取招聘岗位信息
- C++Primer 第10章lambda表达式
- 如果VxRail要发朋友圈
- 【阿里云·云原生架构·白皮书】保姆级解读 一、 云原生架构定义