news 2026/4/17 17:16:38

VisionPro之引导定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VisionPro之引导定位

VisionPro之引导定位

#regionnamespace importsusing 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.ImageProcessing;using Cognex.VisionPro.PMAlign;using Cognex.VisionPro.CalibFix;using Cognex.VisionPro.Caliper;using Cognex.VisionPro.Dimensioning;using Cognex.VisionPro.PixelMap;using Cognex.VisionPro.Blob;#endregionpublic class CogToolBlockAdvancedScript:CogToolBlockAdvancedScriptBase{#regionPrivate Member Variablesprivate Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;Cognex.VisionPro.CogGraphicCollection graphics1=newCogGraphicCollection();Cognex.VisionPro.CogGraphicCollection graphics2=newCogGraphicCollection();Cognex.VisionPro.CogGraphicCollection graphics3=newCogGraphicCollection();//Cognex.VisionPro.CogCircle cogcir = new CogCircle();//Cognex.VisionPro.CogCircularArc circular = new CogCircularArc();CogPMAlignTool[]pma=new CogPMAlignTool[5];CogFixtureTool[]fix=new CogFixtureTool[3];CogFindCircleTool[]findcircle=new CogFindCircleTool[2];CogFitLineTool fitline=newCogFitLineTool();CogFindLineTool findline=newCogFindLineTool();CogFindLineTool findline2=newCogFindLineTool();#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 boolGroupRun(ref string message,ref CogToolResultConstants result){// To let the execution stop in this script when a debugger is attached, uncomment the following lines.// #if DEBUGif(System.Diagnostics.Debugger.IsAttached)System.Diagnostics.Debugger.Break();// #endif// Run each tool using the RunTool function#regionmToolBlock.Outputs["Data"].Value="2";mToolBlock.Outputs["X"].Value=999;mToolBlock.Outputs["Y"].Value=999;mToolBlock.Outputs["R"].Value=999;string tBdata=string.Empty;string data2=string.Empty;string data3=string.Empty;string data4=string.Empty;doublet1=666;graphics1.Clear();graphics2.Clear();graphics3.Clear();intproductnum=0;#endregiontry{//foreach(ICogTool tool in mToolBlock.Tools)// mToolBlock.RunTool(tool, ref message, ref result);CogPMAlignTool pma1=(CogPMAlignTool)mToolBlock.Tools["正平面"];// CogPMAlignTool pma2 = (CogPMAlignTool)mToolBlock.Tools["反斜面"];CogToolBlock tb1=(CogToolBlock)mToolBlock.Tools["正面坐标计算"];CogToolBlock tb2=(CogToolBlock)mToolBlock.Tools["反面坐标计算"];CogBlobTool blob=(CogBlobTool)mToolBlock.Tools["CogBlobTool1"];pma1.Run();blob.Run();// pma2.Run();for(inti=0;i<blob.Results.GetBlobs().Count;i++){productnum++;if(blob.Results.GetBlobs()[i].Area>2000&&blob.Results.GetBlobs()[i].Area<4000){productnum++;}elseif(blob.Results.GetBlobs()[i].Area>4000){intnum=Convert.ToInt32(blob.Results.GetBlobs()[i].Area/2000);for(intj=0;j<num-1;j++){productnum++;}}}if(pma1.Results.Count>0&&productnum>0){tb2.Run();tBdata=(string)tb2.Outputs["Data"].Value;if(tBdata=="4"){mToolBlock.Outputs["X"].Value=(double)tb2.Outputs["X"].Value;mToolBlock.Outputs["Y"].Value=(double)tb2.Outputs["Y"].Value;mToolBlock.Outputs["R"].Value=(double)tb2.Outputs["R"].Value;mToolBlock.Outputs["Graphics"].Value=(CogGraphicCollection)tb2.Outputs["Graphics"].Value;}else{tb1.Run();tBdata=(string)tb1.Outputs["Data"].Value;if(tBdata=="1"){mToolBlock.Outputs["X"].Value=(double)tb1.Outputs["X"].Value;mToolBlock.Outputs["Y"].Value=(double)tb1.Outputs["Y"].Value;mToolBlock.Outputs["R"].Value=(double)tb1.Outputs["R"].Value;mToolBlock.Outputs["Graphics"].Value=(CogGraphicCollection)tb1.Outputs["Graphics"].Value;}}if(productnum>=8){mToolBlock.Outputs["Data"].Value=tBdata;}else{mToolBlock.Outputs["Data"].Value="3";}}elseif(productnum<3){mToolBlock.Outputs["Data"].Value="3";mToolBlock.Outputs["X"].Value=t1;mToolBlock.Outputs["Y"].Value=t1;mToolBlock.Outputs["R"].Value=t1;}else{mToolBlock.Outputs["Data"].Value="3";mToolBlock.Outputs["X"].Value=t1;mToolBlock.Outputs["Y"].Value=t1;mToolBlock.Outputs["R"].Value=t1;}DisplayLabel(100,300,"数量: "+productnum.ToString(),CogColorConstants.Green,1);mToolBlock.Outputs["Graphics2"].Value=graphics2;}catch{DisplayLabel(100,100,"计算ERROR",CogColorConstants.Red,1);mToolBlock.Outputs["Data"].Value="2";mToolBlock.Outputs["X"].Value=t1;mToolBlock.Outputs["Y"].Value=t1;mToolBlock.Outputs["R"].Value=t1;mToolBlock.Outputs["Graphics"].Value=graphics2;}returnfalse;}publicvoidDisplayLabel(doublex,doubley,string text,CogColorConstants color,intindex){CogGraphicLabel displaylabel=newCogGraphicLabel();displaylabel.Alignment=CogGraphicLabelAlignmentConstants.TopLeft;displaylabel.LineWidthInScreenPixels=100;displaylabel.Font=newFont("微软雅黑",12);if(index==2){displaylabel.Font=newFont("微软雅黑",20);}displaylabel.Color=CogColorConstants.Black;displaylabel.SelectedSpaceName="@";displaylabel.SetXYText(x,y,text);displaylabel.BackgroundColor=color;graphics1.Add(displaylabel);}publicvoidDebugLabel(doublex,doubley,string text,CogColorConstants color){CogGraphicLabel debuglabel=newCogGraphicLabel();debuglabel.Alignment=CogGraphicLabelAlignmentConstants.TopLeft;debuglabel.LineWidthInScreenPixels=100;debuglabel.Font=newFont("微软雅黑",15);debuglabel.BackgroundColor=CogColorConstants.Green;debuglabel.SetXYText(x,y,text);debuglabel.Color=color;graphics2.Add(debuglabel);}publicvoidGraph_Circle(doublex,doubley,doubleradius,CogColorConstants color){CogCircle cir=newCogCircle();cir.Color=color;cir.DragLineWidthInScreenPixels=50;cir.LineWidthInScreenPixels=5;cir.CenterX=x;cir.CenterY=y;cir.Radius=radius;graphics3.Add(cir);}#regionWhen 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 overridevoidModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord){}#endregion#regionWhen 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 overridevoidModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord){foreach(ICogGraphic gra in graphics1){mToolBlock.AddGraphicToRunRecord(gra,lastRecord,"正平面.InputImage","");}foreach(ICogGraphic gra in graphics2){mToolBlock.AddGraphicToRunRecord(gra,lastRecord,"CogPMAlignTool1.InputImage","");}}#endregion#regionWhen the Script is Initialized/// <summary>/// Perform any initialization required by your script here/// </summary>/// <param name="host">The host tool</param>public overridevoidInitialize(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}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 6:41:28

强烈安利8个AI论文平台,本科生搞定毕业论文不再难!

强烈安利8个AI论文平台&#xff0c;本科生搞定毕业论文不再难&#xff01; AI 工具如何让论文写作不再“难” 在如今的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来提升论文写作效率。这些工具不仅能帮助学生快速生成内容&#xff0c;还能在降低 AIGC 率、保持语…

作者头像 李华
网站建设 2026/4/17 16:29:35

从零部署Qwen2.5-7B-Instruct|实现JSON/SQL等结构化输出的完整指南

从零部署Qwen2.5-7B-Instruct&#xff5c;实现JSON/SQL等结构化输出的完整指南 引言&#xff1a;为什么需要结构化输出&#xff1f; 在大模型应用落地过程中&#xff0c;非结构化的自然语言输出虽然可读性强&#xff0c;但难以被程序直接解析和处理。尤其是在构建自动化系统、…

作者头像 李华
网站建设 2026/4/18 8:47:50

Rembg抠图实战:家具产品去背景案例

Rembg抠图实战&#xff1a;家具产品去背景案例 1. 引言 1.1 业务场景描述 在电商、家居设计和数字内容创作领域&#xff0c;高质量的产品图像处理是提升用户体验和转化率的关键环节。以家具类产品为例&#xff0c;其拍摄环境复杂、边缘细节丰富&#xff08;如木纹、金属边框…

作者头像 李华
网站建设 2026/4/18 7:55:05

Rembg模型解析:数据增强技术应用

Rembg模型解析&#xff1a;数据增强技术应用 1. 智能万能抠图 - Rembg 在图像处理与计算机视觉领域&#xff0c;自动去背景&#xff08;Image Matting / Background Removal&#xff09; 是一项高频且关键的任务。无论是电商商品图精修、社交媒体内容创作&#xff0c;还是AI生…

作者头像 李华
网站建设 2026/4/18 1:59:06

企业选对招聘系统:一体化方案需覆盖这些 AI 核心功能

在企业招聘从 “人工主导” 向 “智能驱动” 转型的过程中&#xff0c;一体化智能招聘系统成为破解海量简历筛选难、流程协同效率低、人才匹配精准度不足等问题的关键工具。而 AI 功能模块作为系统的核心能力支撑&#xff0c;直接决定了招聘全流程的效率与质量。本文将从实际应…

作者头像 李华
网站建设 2026/4/17 18:44:22

活着么APP源码源代码分享,含前后端,专注签到与自动通知功能

温馨提示&#xff1a;文末有资源获取方式系统功能全景&#xff1a;简约而不简单的守护逻辑一步配置&#xff0c;牵挂即刻上线&#xff1a;设计哲学是“去复杂化”。打开应用&#xff0c;没有首页广告&#xff0c;没有繁琐引导&#xff0c;直接进入核心设置——为你的安全指定一…

作者头像 李华