Создание ограничивающих рамок из SVG - PullRequest
0 голосов
/ 16 марта 2020

У меня есть следующий (немного грязный) SVG, который содержит различные точки многоугольника. Мне интересно, могу ли я извлечь из этого ограничительную рамку для прямоугольника.

Конечной целью было бы получить координаты xmin, ymin, xmax и ymax для Mask-RCNN. Это оказалось довольно сложно, мой подход состоял в том, чтобы проанализировать SVG с ElementTree, но я не могу найти правильные координаты из файла.

Буду признателен за все предложения о том, как подойти к этому вопросу. Также может быть проще визуализировать SVG , например, здесь , чтобы получить представление.

<!DOCTYPE html>
<html>
    <body>
        <?xml version="1.0"?>
        <svg
            xmlns="http://www.w3.org/2000/svg"
            xmlns:xlink="http://www.w3.org/1999/xlink" height="671.7100486755371" version="1.1" width="1445.001937866211" id="temp" viewBox="0 0 1445.001937866211 671.7100486755371">
            <defs/>
            <g id="331c0f98-4b0f-489c-b6ae-abeaa581e6db" fill="#ffffff" stroke="#000000" style="fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.2;" class="Space Outdoor Balcony">
                <polygon points="239.02,455.04 239.02,243.50 328.83,243.50 328.83,455.04 239.02,455.04 239.02,455.04 "/>
                <g transform="matrix(1,0,0,1,239.0227,243.5035)" class="Dimension">
                    <g transform="matrix(1,0,0,1,0,0)" style="display: none;" class="Visual">
                        <g id="mark1" fill="#000000" stroke="none" transform="matrix(1,0,0,1,44.9018,0)" style="fill-opacity: 1; pointer-events: visible;" class="DimensionMark">
                            <polygon points="-5,5,0,0,5,5"/>
                        </g>
                        <g id="mark2" fill="#000000" stroke="none" transform="matrix(1,0,0,1,89.8036,105.7683)" style="fill-opacity: 1; pointer-events: visible;" class="DimensionMark">
                            <polygon points="-5,-5,0,0,-5,5"/>
                        </g>
                        <g id="mark3" fill="#000000" stroke="none" transform="matrix(1,0,0,1,44.9018,211.5366)" style="fill-opacity: 1; pointer-events: visible;" class="DimensionMark">
                            <polygon points="-5,-5,0,0,5,-5"/>
                        </g>
                        <g id="mark4" fill="#000000" stroke="none" transform="matrix(1,0,0,1,0,105.7683)" style="fill-opacity: 1; pointer-events: visible;" class="DimensionMark">
                            <polygon points="5,5,0,0,5,-5"/>
                        </g>
                    </g>
                    <g transform="matrix(0,-1,1,0,57.9238,182.1089)" class="SpaceDimensionsLabel" style="display: block;">
                        <g id="NameLabel" style="display: block;" class="TextLabel NameLabel">
                            <text x="0" y="0em" fill="#000000" stroke="none" style="font-family: Verdana; font-size: 33px; fill-opacity: 1; cursor: default;">BLOCK</text>
                        </g>
                        <g id="DimensionMeasureLabel" transform="matrix(1,0,0,1,-32.0313,40.125)" style="display: none;" class="TextLabel DimensionMeasureLabel">
                            <text x="0" y="0em" fill="#000000" stroke="none" style="font-family: Verdana; font-size: 33px; fill-opacity: 1; cursor: default;">2'11" x 6'11"</text>
                            <text x="0" y="0"/>
                        </g>
                    </g>
                </g>
            </g>
        </svg>
    </body>
</html>

...