示例#1
0
            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);
                    }
                }
            }
示例#2
0
            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);
                    }
                }
            }