快捷搜索:  汽车  科技

visionpro常用脚本(C调用VisionproCogBlobTool工具)

visionpro常用脚本(C调用VisionproCogBlobTool工具)图5. CogBlobTool结果页运行后,查看结果,N是Blob的索引号,在Results.GetBlobs()中使用,ID是Blob的唯一识别码,后面的面积是【侧得尺寸】中选择测量的尺寸:图2. 设置Segmentation、Connectivity 和 Morphology 参数图3. 设置Region参数图4. 设置【测得尺寸】

VisionPro CogBlobTool的作用是检测和定位图像中某一灰度范围内的形状位置特征,可以分析特征是否存在、特征数量、特征位置、特征形状轮廓/长宽

VisionPro中CogBlobTool的使用

Visionpro中使用CogBlobTool关键以下几个步骤:

  • 通过拖曳或右键”InputImage”-->”连接自”传入测试图像

visionpro常用脚本(C调用VisionproCogBlobTool工具)(1)

图1. 向CogBlobTool传入要测试的图像

注:CogBlobTool只接受灰度图像输入,不接受彩色图像

  • 设置Segmentation、Connectivity 和 Morphology 参数

visionpro常用脚本(C调用VisionproCogBlobTool工具)(2)

图2. 设置Segmentation、Connectivity 和 Morphology 参数

  • 设置斑点分析的区域,默认对整幅图像进行斑点分析

visionpro常用脚本(C调用VisionproCogBlobTool工具)(3)

图3. 设置Region参数

  • 设置要测得的尺寸,这里将变更Results.GetBlobs()的输出

visionpro常用脚本(C调用VisionproCogBlobTool工具)(4)

图4. 设置【测得尺寸】

运行后,查看结果,N是Blob的索引号,在Results.GetBlobs()中使用,ID是Blob的唯一识别码,后面的面积是【侧得尺寸】中选择测量的尺寸:

visionpro常用脚本(C调用VisionproCogBlobTool工具)(5)

图5. CogBlobTool结果页

C#调用CogBlobTool
  • 添加Cognex.Visionpro、Cognex.Visionpro.Blob、Cognex.VisionPro.Core引用

visionpro常用脚本(C调用VisionproCogBlobTool工具)(6)

图6. 添加Visionpro的相关引用

using Cognex.VisionPro; using Cognex.VisionPro.Blob; namespace MyVppTest { public class BlobAnalysis { public CogBlobResultCollection GetBlobAnalysisResults(CogImage8Grey image8Grey CogImage8Grey MaskImg = null) { //实例化CogBlobTool对象 CogBlobTool blobTool = new CogBlobTool(); //输入灰度图像(必须输入项) blobTool.InputImage = image8Grey; //设置矩形区域为Blob分析的区域(默认是整张图像),根据实际应用变更 CogRectangle rectangle = new CogRectangle(); rectangle.SetXYWidthHeight(0 0 image8Grey.Width image8Grey.Height); blobTool.Region = rectangle; //可以传入任何实现Cognex.ICogRegion的形状 //设置区域模式(一般使用默认的,不写) blobTool.RunParams.RegionMode = CogRegionModeConstants.PixelAlignedBoundingBoxAdjustMask; //设置分段参数(以下设置为获取亮度不高于128的黑斑),必须根据实际应用变更 blobTool.RunParams.SegmentationParams.Mode = CogBlobSegmentationModeConstants.HardFixedThreshold; //使用固定的硬阈值模式 blobTool.RunParams.SegmentationParams.Polarity = CogBlobSegmentationPolarityConstants.DarkBlobs; //获取白底黑斑 blobTool.RunParams.SegmentationParams.HardFixedThreshold = 128; //设置连通性(以下除ConnectivityMinPixels外实际为默认设置,不需要用代码写) blobTool.RunParams.ConnectivityMode = CogBlobConnectivityModeConstants.GreyScale; //按照灰度模式将对象像素连接成斑点 blobTool.RunParams.ConnectivityCleanup = CogBlobConnectivityCleanupConstants.Fill; //将对象像素外的像素及连接后面积不足最小值的部分对象像素填充 blobTool.RunParams.ConnectivityMinPixels = 20; //设置斑点的最小像素面积为20,根据实际填写 //设置【形态调整操作】,一般为空,不写,另外使用图像处理 blobTool.RunParams.MorphologyOperations.Add(CogBlobMorphologyConstants.CloseHorizontal); //设置运行时要测得的尺寸 blobTool.RunParams.RunTimeMeasures.Clear();// 清除默认的运行时测量 CogBlobMeasure blobMeasure0 = new CogBlobMeasure { Measure = CogBlobMeasureConstants.Area Mode = CogBlobMeasureModeConstants.Filter FilterMode = CogBlobFilterModeConstants.ExcludeBlobsInRange FilterRangeLow = 400 FilterRangeHigh = 500 }; //实例化一个包含面积400~500像素的运行时测量 blobTool.RunParams.RunTimeMeasures.Add(blobMeasure0); //设置为面积降序,注意前面RunTimeMeasures中必须已添加进行排序的测量 blobTool.RunParams.SortEnabled = true; blobTool.RunParams.SortAscending = false; blobTool.RunParams.SortMeasure = CogBlobMeasureConstants.Area; //以下实际属性是默认的设置,不需要写 blobTool.RunParams.ComputeBlobRLE = true; //是否需要额外计算周长等 blobTool.RunParams.ComputeInertia = true; //是否计算惯性 blobTool.RunParams.ComputeTopology = true; //是否计算拓扑(父子关系) //设置遮蔽图像(常用) blobTool.RunParams.InputImageMask = MaskImg; //运行CogBlobTool工具 blobTool.Run(); //保存结果 CogBlobResultCollection Results = (CogBlobResultCollection)blobTool.Results.GetBlobs().Clone(); //释放CogBlobTool对象 rectangle = null; blobTool.Dispose(); return Results; } } }

猜您喜欢: