Interface which allows the user to select and configure
the desired method of image segmentation.
Namespace: Cognex.VisionPro.BlobAssembly: Cognex.VisionPro.Blob (in Cognex.VisionPro.Blob.dll) Version: 65.1.0.0
Syntax
Property Value
Type: CogBlobSegmentationParamsThe default is a default-constructed CogBlobSegmentationParams object.
Events
| Event Type | Reason |
|---|---|
| ICogChangedEvent Changed | Fires when the value of this property changes. The following state flag may be affected: |
Exceptions
| Exception | Condition |
|---|---|
| ArgumentException | The supplied value is NULL. |
Remarks
An CogBlobSegmentationParams that determines how the image is segmented into object and background pixels.
Examples
Imports Cognex.VisionPro
Imports Cognex.VisionPro.Blob
Dim myBlob As New CogBlob
Dim myAreaMeasure As New CogBlobMeasure
Dim myPerimeterMeasure As New CogBlobMeasure
Dim myBlobResults As CogBlobResults
Try
' Find all blobs with an area greater than 10 and' a perimeter greater than 100 pixels
myAreaMeasure.Measure = CogBlobMeasureConstants.Area
myAreaMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange
myAreaMeasure.FilterRangeLow = 10
myAreaMeasure.FilterRangeHigh = 500000
myAreaMeasure.Mode = CogBlobMeasureModeConstants.Filter
myPerimeterMeasure.Measure = CogBlobMeasureConstants.Perimeter
myPerimeterMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange
myPerimeterMeasure.FilterRangeLow = 100
myPerimeterMeasure.FilterRangeHigh = 500000
myPerimeterMeasure.Mode = CogBlobMeasureModeConstants.Filter
myBlob.RunTimeMeasures.Add(myAreaMeasure)
myBlob.RunTimeMeasures.Add(myPerimeterMeasure)
myBlob.ConnectivityCleanup = CogBlobConnectivityCleanupConstants.Fill
myBlob.SegmentationParams.Mode = CogBlobSegmentationModeConstants.HardDynamicThreshold
myBlob.MorphologyOperations.Add(CogBlobMorphologyConstants.CloseSquare)
' mobjImage is an acquired image
myBlobResults = myBlob.Execute(mobjImage, r)
Debug.WriteLine(myBlobResults.GetBlobs.Count.ToString)
Dim aResult As CogBlobResult
Dim avgArea As Double
For Each aResult In myBlobResults.GetBlobs
avgArea = avgArea + aResult.Area
Next
avgArea = avgArea / myBlobResults.GetBlobs.Count
Debug.WriteLine(" AvgArea:" + avgArea.ToString)
Catch ex As Exception
Debug.WriteLine("Following Error Occurred:" + ex.Message)
End Tryusing Cognex.VisionPro; using Cognex.VisionPro.Blob; private void doBlob() { CogBlob myBlob=new CogBlob(); CogBlobMeasure myAreaMeasure=new CogBlobMeasure(); CogBlobMeasure myPerimeterMeasure=new CogBlobMeasure(); CogBlobResults myBlobResults; Double avgArea=0; try { // Find all blobs with an area greater than 10 and' a perimeter greater than 100 pixels myAreaMeasure.Measure = CogBlobMeasureConstants.Area; myAreaMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange; myAreaMeasure.FilterRangeLow = 10; myAreaMeasure.FilterRangeHigh = 500000; myAreaMeasure.Mode = CogBlobMeasureModeConstants.Filter; myPerimeterMeasure.Measure = CogBlobMeasureConstants.Perimeter; myPerimeterMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange; myPerimeterMeasure.FilterRangeLow = 100; myPerimeterMeasure.FilterRangeHigh = 500000; myPerimeterMeasure.Mode = CogBlobMeasureModeConstants.Filter; myBlob.RunTimeMeasures.Add(myAreaMeasure); myBlob.RunTimeMeasures.Add(myPerimeterMeasure); myBlob.ConnectivityCleanup = CogBlobConnectivityCleanupConstants.Fill; myBlob.SegmentationParams.Mode = CogBlobSegmentationModeConstants.HardDynamicThreshold; myBlob.MorphologyOperations.Add(CogBlobMorphologyConstants.CloseSquare); // mobjImage is an acquired image myBlobResults = myBlob.Execute(mobjImage, r); Debug.WriteLine(myBlobResults.GetBlobs(true).Count.ToString()); foreach (CogBlobResult aResult in myBlobResults.GetBlobs(true)) { avgArea = avgArea + aResult.Area; } avgArea =avgArea / myBlobResults.GetBlobs(true).Count; Debug.WriteLine(" AvgArea:" + avgArea.ToString()); } catch (System.Exception ex) { Debug.WriteLine("Following Error Occurred:" + ex.Message); } }
See Also