У меня проблема, когда я читаю координаты из файла 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)