отрисовка контура из списка координат x, y, извлеченного из файла xml - PullRequest
0 голосов
/ 05 марта 2020

Мне нужна помощь, пожалуйста, я разбираю файл xml, чтобы получить координаты (x, y), и с этой координатой x, y мне нужно нарисовать контур на каком-то изображении, проблема в том, когда я использую полилинию функция не работает вывод:

((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))
Traceback (most recent call last):
  File "C:\Users\Pc\Desktop\parser un fichier xml\pars4.py", line 54, in <module>
    result = main('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.xml')
  File "C:\Users\Pc\Desktop\parser un fichier xml\pars4.py", line 32, in main
    img=cv2.polylines(image, pts, 1, (255,255,255))
TypeError: pts data type = 19 is not supported

код:

import xml.dom.minidom
import cv2 
import numpy as np
import matplotlib.pyplot as plt
from numpy.polynomial import polynomial


image = cv2.imread('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.jpeg')
cv2.imshow("image",image)
cv2.waitKey() 
#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)
    a = map(float, d)
    print(tuple(zip(a, a)))
    type(a) 
    pts = np.array([d])
    pts = pts.reshape((-1,1,2))
    img=cv2.polylines(image, pts, 1, (255,255,255))
    cv2.imshow("contour",img)
    cv2.waitkey()   
result = main('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.xml')
#img=cv2.polylines(image, np.float64([pts]), 1, (255,255,255))
print(result)

код xml:

<?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>
...