как я могу нарисовать контур из списка координат - PullRequest
0 голосов
/ 04 марта 2020

мне нужно нарисовать контур для изображения из списка координат x, yi получить список координат x, y, но я не знаю, как объединить между списком и функцией drawcontour * файл 1009 * очень большой :

<?xml version="1.0" ?>
<TwoDimensionSpatialCoordinate>
    <coordinateIndex value="0"/>
        <x value="302.6215607602997"/>
        <y value="166.6285651861381"/>
    <coordinateIndex value="1"/>
        <x value="3.6215607602997"/>
        <y value="1.6285651861381"/>
</TwoDimensionSpatialCoordinate>

код:

import xml.dom.minidom
#recuperation de (x,y)d'un fichier xml
def main(file):
    doc = xml.dom.minidom.parse(file)
    coordX = doc.getElementsByTagName("x")
    coordY = doc.getElementsByTagName("y")
    d = []
    for atr_x, atr_y in zip(coordX, coordY):
        x = atr_x.getAttribute('value')
        y = atr_y.getAttribute('value')
        print("x", x, "y", y)
        d.append(x)
        d.append(y)
        #convertir les élements de la liste a float
        [float(i) for i in d]


    return d
    #read image
    image = cv2.imread('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.jpeg')
    #drawcontour avec les positions (x,y) qu'on a extrait du fichier xml 
    cv.drawContours(img, [d], 0, (0,255,0), 3)



    """cv2.polylines(image, 
              d, 
              isClosed = False,
              color = (0,255,0),
              thickness = 3, 
              linetype = cv2.LINE_AA)"""
    imshow("image",image)
    cv2.waitKey()         


result = main('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.xml')
print(result)

выход:

['302.6215607602997', '166.6285651861381', '317.14038591056607', '156.62670786039905', '328.11016491298955', '151.4644589180821', '337.6280614003864', '149.04465472637105', '350.0497229178365', '150.17389668250289', '363.9232669503133', '149.68993584416066', '373.4411634377101', '153.40030227145095', '379.7326543361589', '159.5304728904523', '385.54018439626543', '171.30685329011283', '389.0892305441083', '184.53511620479998', '389.89583194134536', '195.50489520722346', '390.3797927796876', '207.44259588633133', '385.86282495516025', '218.89633572709704', '378.7647326594745', '226.63970914057245', '367.794953657051', '232.60855948012642', '352.630847388995', '233.89912171570563', '340.85446698933447', '230.83403640620494', '329.7233677074636', '225.8331077433354', '318.2696278666979', '218.25105460930743', '311.4941761299069', '208.5718378424632', '305.84796634924777', '199.21526163451375', '302.7828810397471', '188.24548263209027', '300.52439712748344', '179.53418754193044']

...