VisionPro 核心工具链
一、核心概念术语说明VisionProCognex 公司的机器视觉开发平台包含各种视觉工具和算法ToolBlockVisionPro 中的工具块用于组织和执行多个视觉工具CogPMAlignTool模板匹配工具用于定位和识别目标对象CogBlobToolBlob分析工具用于检测和分析图像中的连通区域CogIDTool识别工具用于读取一维码、二维码等CogColorTool颜色分析工具用于颜色匹配和识别CogCaliperTool卡尺工具用于边缘检测和尺寸测量CogCompareTool对比工具用于图像比较和差异分析CogHistogramTool直方图工具用于分析图像像素分布CogImageConvertTool图像转换工具用于色彩空间转换CogPolarUnwrapTool极坐标展开工具用于将圆形区域展开为矩形CogFixtureTool固定工具用于建立坐标系统CogGraphicLabel图形标签用于在图像上显示文本信息CogGraphicCollection图形集合用于管理多个图形对象二、常用操作1. 工具安装与环境配置// VisionPro 安装后需要在 Visual Studio 中添加引用 // 常用命名空间 using Cognex.VisionPro; // 核心库ICogImage、CogDisplay、CogSerializer 等 using Cognex.VisionPro.ToolBlock; // ToolBlock 脚本编程 using Cognex.VisionPro.PMAlign; // 模板匹配工具 using Cognex.VisionPro.CalibFix; // 坐标校准工具 using Cognex.VisionPro.Caliper; // 卡尺/边缘检测工具 using Cognex.VisionPro.Blob; // Blob 分析工具 using Cognex.VisionPro.ImageProcessing; // 图像预处理极坐标、形态学等2. 模板匹配工具CogPMAlignTool// 创建模板匹配工具 CogPMAlignTool pmaTool new CogPMAlignTool(); // 设置训练图像 pmaTool.Pattern.TrainImage cogImage1; // 设置训练区域 pmaTool.Pattern.TrainRegion cogRectangle1; // 执行训练 pmaTool.Pattern.Train(); // 运行工具 pmaTool.Run(); // 获取结果 // Results 按匹配分数从高到低排列[0] 为最佳匹配 if (pmaTool.Results ! null pmaTool.Results.Count 0) { double x pmaTool.Results[0].GetPose().TranslationX; // 匹配中心 X 坐标像素 double y pmaTool.Results[0].GetPose().TranslationY; // 匹配中心 Y 坐标像素 double angle pmaTool.Results[0].GetPose().Rotation; // 旋转角弧度 double score pmaTool.Results[0].Score; // 匹配分数范围 0~1通常阈值设 0.5 }3. 卡尺工具CogCaliperTool// 创建卡尺工具 CogCaliperTool caliper new CogCaliperTool(); // 设置搜索区域 caliper.Region cogRectangle1; // 设置卡尺参数 // EdgeMode: SingleEdge 检测单边PairEdge 同时检测两条对边用于测量宽度 caliper.RunParams.EdgeMode CogCaliperEdgeModeConstants.SingleEdge; // EdgePolarity: DarkToLight 检测从暗到亮的边缘LightToDark 反之DontCare 不限方向 caliper.RunParams.EdgePolarity CogCaliperEdgePolarityConstants.DarkToLight; // 运行工具 caliper.Run(); // 获取结果 if (caliper.Results ! null caliper.Results.Count 0) { double edgeX caliper.Results[0].EdgeX; // 边缘点 X 坐标 double edgeY caliper.Results[0].EdgeY; // 边缘点 Y 坐标 double edgeScore caliper.Results[0].EdgeScore; // 边缘强度分数越高越清晰 }4. Blob分析工具CogBlobTool// 创建Blob工具 CogBlobTool blobTool new CogBlobTool(); // 设置输入图像 blobTool.InputImage cogImage1; // 设置阈值参数 // HardFixedThreshold: 固定阈值分割低于此值为暗区域高于此值为亮区域 blobTool.RunParams.SegmentationParams.Mode CogBlobSegmentationModeConstants.HardFixedThreshold; blobTool.RunParams.SegmentationParams.HardFixedThreshold 128; // 0~255128 为中间值 // 设置面积过滤过滤噪声小 Blob 和超大背景 Blob blobTool.RunParams.FilterResults true; blobTool.RunParams.FilterResultParams.MaxArea 1000; // 最大面积像素²排除背景 blobTool.RunParams.FilterResultParams.MinArea 100; // 最小面积像素²排除噪点 // 运行工具 blobTool.Run(); // 获取结果Blobs 按面积从大到小排列 int blobCount blobTool.Results.GetBlobs().Count; if (blobCount 0) { CogBlobResult blob blobTool.Results.GetBlobs()[0]; double area blob.Area; // Blob 面积像素² double centerX blob.CenterOfMassX; // 质心 X 坐标 double centerY blob.CenterOfMassY; // 质心 Y 坐标 }5. 几何学工具// 查找圆形CogFindCircleTool - 用于检测图像中的圆形 CogFindCircleTool fc new CogFindCircleTool(); // 设置输入图像独立使用时必须赋値在 ToolBlock 脚本中由管道自动提供 fc.InputImage cogImage1; // 设置搜索圆形的预期条件缩小搜索范围提升速度 fc.RunParams.ExpectedCircularArc.CenterX 100; // 预期圆心 X fc.RunParams.ExpectedCircularArc.CenterY 100; // 预期圆心 Y fc.RunParams.ExpectedCircularArc.Radius 50; // 预期半径像素 fc.Run(); // 获取结果 CogCircle circle fc.Results.GetCircle(); double radius circle.Radius; // 检测到的半径 double centerX circle.CenterX; // 圆心 X double centerY circle.CenterY; // 圆心 Y6. 颜色分析工具// 创建颜色工具 CogColorTool colorTool new CogColorTool(); // 设置输入图像须为彩色图像 ICogImage colorTool.InputImage cogImage1; // 设置分析区域可选 colorTool.Region cogRectangle1; // 运行工具 colorTool.Run(); // 获取结果每个 Result 对应一个颜色分段的统计 if (colorTool.Results ! null colorTool.Results.Count 0) { CogColorToolResult res colorTool.Results[0]; double score res.Score; // 匹配分数0~1 double pixelCount res.Count; // 满足颜色条件的像素数 } // 注意颜色范围Hue/Saturation/Intensity 区间通常在 QuickBuild 中图形化配置7. 预处理工具// 图像转换 - 用于色彩空间转换 CogImageConvertTool convertTool new CogImageConvertTool(); convertTool.InputImage cogImage1; convertTool.RunParams.RunMode CogImageConvertRunModeConstants.RGBToGrey; convertTool.Run(); // 极坐标展开 - 将圆形区域如瓶盖边缘展开为矩形便于后续检测 CogPolarUnwrapTool polarTool new CogPolarUnwrapTool(); polarTool.InputImage cogImage1; polarTool.RunParams.CenterX 100; // 展开中心 X通常为圆形目标的圆心 polarTool.RunParams.CenterY 100; // 展开中心 Y polarTool.RunParams.OuterRadius 80; // 外半径展开范围的外边界 polarTool.RunParams.InnerRadius 20; // 内半径展开范围的内边界0 可排除中心区域 polarTool.Run(); // 输出图像宽度 2π * (OuterRadiusInnerRadius)/2高度 OuterRadius - InnerRadius // 注意形态学操作膨胀、腐蚀等通常在ToolBlock中配置 // 通过QuickBuild界面设置操作类型和参数8. 固定工具CogFixtureTool// CogFixtureTool 将图像对齐到以检测对象为基准的坐标系 // 通常与 PMAlign 配合先定位对象再 Fixture 使后续工具在对象坐标系下工作 CogFixtureTool fixture new CogFixtureTool(); fixture.InputImage cogImage1; // 从 PMAlign 结果获取位姿设置为固定变换 fixture.RunParams.FixturedFromFixture pmaTool.Results[0].GetPose(); fixture.Run(); // 获取已对齐的输出图像后续卡尺/Blob等工具在此图像上运行 ICogImage fixedImage fixture.OutputImage;9. ToolBlock脚本编程// ToolBlock脚本基类 public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase { private CogToolBlock mToolBlock; // 主运行函数 public override bool GroupRun(ref string message, ref CogToolResultConstants result) { // 获取工具 CogBlobTool blob mToolBlock.Tools[CogBlobTool1] as CogBlobTool; // 运行所有工具顺序执行 ToolBlock 中的每个工具 foreach (ICogTool tool in mToolBlock.Tools) mToolBlock.RunTool(tool, ref message, ref result); // 获取结果 int count blob.Results.GetBlobs().Count; // 设置输出消息显示在 ToolBlock 运行状态栏 message Count: count.ToString(); // 返回 false表示脚本已自行处理工具执行ToolBlock 不再自动重跑工具 return false; } // 初始化 public override void Initialize(CogToolGroup host) { base.Initialize(host); mToolBlock host as CogToolBlock; } // 修改显示记录 public override void ModifyLastRunRecord(ICogRecord lastRecord) { // 将图形叠加到运行记录使其在 CogRecordDisplay 上可见 CogGraphicLabel label new CogGraphicLabel(); label.SetXYText(100, 100, Result); // 参数图形对象、记录对象、叠加目标图像的记录路径、图层名称 mToolBlock.AddGraphicToRunRecord(label, lastRecord, CogBlobTool1.InputImage, script); } }三、问题排查错误1CogNotConnectedException现象工具运行时提示未连接错误原因相机或图像源未正确连接解决检查相机连接是否正常确认CogAcqFifoTool配置正确检查图像是否成功采集错误2CogPMAlignNoMatchException现象模板匹配无结果原因模板训练不完整或图像质量差解决重新训练模板确保训练区域包含明显特征调整匹配参数Score阈值、搜索范围等检查图像光照和对比度错误3CogCalibNPointToNPointCalibrationFailedException现象校准失败原因校准点数量不足或分布不合理解决增加校准点数量建议至少4个点确保校准点均匀分布检查点对坐标是否正确错误4脚本执行错误现象ToolBlock脚本运行异常原因脚本中访问了不存在的工具或参数解决检查工具名称是否与ToolBlock中一致使用try-catch捕获异常确认工具已正确添加到ToolBlock错误5图像显示问题现象CogDisplay不显示图像原因图像未正确赋值或显示配置错误解决检查cogDisplay.Image是否已赋值调用cogDisplay.Fit()自适应显示检查图像格式是否支持四、相关资源官方文档Cognex VisionPro Documentation