мне нужно нарисовать контур для изображения из списка координат 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']