Python найти контур или подоконник из списка координат - PullRequest
0 голосов
/ 14 июля 2020

У меня проблема, когда я читаю координаты из файла json. Эти внешние координаты представляют собой контурные линии аннотированного многоугольника. Есть еще один набор координат, помеченных как внутренние, которые являются «дырами» во внешней аннотации. Я вычислил все координаты в каждом соответствующем списке и удалил внутренние координаты из внешних. Теперь мне нужно воссоздать контур с этим новым списком координат. Я провел небольшое исследование и обнаружил, что это можно сделать с помощью OpenCV, но все учебные пособия / документация загружают изображение и используют его для поиска контуров. Я также видел примеры в MatLab, но как мне решить эту проблему в Python? Код, который я показываю ниже, соответствует точке, где у меня есть новый набор координат:

image_base = {
        "id": idimg,
        "width": json_suprv['size']['width'],
        "height": json_suprv['size']['height'],
        "file_name": fname_img if not only_img_name else Path(fname_img).name,
        "license": 1,
        "date_captured": ""
    }

objects = [obj for obj in json_suprv['objects'] if obj['classTitle'] != 'bg']

coordinates_x = []
coordinates_y = []
coordinates_interior_x = []
coordinates_interior_y = []

obj_exteriors = [
    np.array(obj['points']['exterior'])
    for obj in objects
]

## Generating list of x and y coordiantes for polygon function
for obj in objects:
    points = obj['points']['exterior']
    for items in points:
        coordinates_x.append(items[0])
        coordinates_y.append(items[1])

for obj in objects:
    points = obj['points']['interior']
    for items in points:
        coordinates_interior_x.append(items[0])
        coordinates_interior_y.append(items[1])

x_coord, y_coord = polygon_area_calculation(coordinates_x, coordinates_y)
x_coord_interior, y_coord_interior = polygon_area_calculation(coordinates_interior_x, coordinates_interior_y)

coordinates = []
for i in range(len(x_coord)):
    coordinates.append([x_coord[i], y_coord[i]])
coordinates_interior = []
for i in range(len(x_coord_interior)):
    coordinates_interior.append([x_coord_interior[i], y_coord_interior[i]])

coordinates_set = set(tuple(x) for x in coordinates)
coordinates_interior_set = set(tuple(x) for x in coordinates_interior)
polygon_remaining = coordinates_set.difference(coordinates_interior_set)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...