public void Execute() { for (var row = 0; row < rows; row++) { var rowSlice = new NativeSlice <Color32>(segmentationImageData, width * row, width); var currentBB = new Object1DSpan { instanceId = 0, row = row + rowStart }; for (var i = 0; i < rowSlice.Length; i++) { var packed = InstanceIdToColorMapping.GetPackedColorFromColor(rowSlice[i]); // pixel color black (0,0,0,255) is reserved for no hit, so set it to id 0 var id = packed == 255 ? 0 : packed; if (id != currentBB.instanceId) { if (currentBB.instanceId > 0) { //save off currentBB currentBB.right = i - 1; boundingBoxes.Add(currentBB); } currentBB = new Object1DSpan { instanceId = id, left = i, row = row + rowStart }; } } if (currentBB.instanceId > 0) { //save off currentBB currentBB.right = width - 1; boundingBoxes.Add(currentBB); } } }
public void Execute() { for (var row = 0; row < rows; row++) { var rowSlice = new NativeSlice <uint>(segmentationImageData, width * row, width); var currentBB = new Object1DSpan { instanceId = 0, row = row + rowStart }; for (var i = 0; i < rowSlice.Length; i++) { var value = rowSlice[i]; if (value != currentBB.instanceId) { if (currentBB.instanceId > 0) { //save off currentBB currentBB.right = i - 1; boundingBoxes.Add(currentBB); } currentBB = new Object1DSpan { instanceId = value, left = i, row = row + rowStart }; } } if (currentBB.instanceId > 0) { //save off currentBB currentBB.right = width - 1; boundingBoxes.Add(currentBB); } } }