Python 在.json文件中将圆转换为多边形
我有一个.json文件,其中包含我想要训练神经网络的对象的注释(以圆和多边形为单位)。但是问题是,训练代码只接受.json文件中的多边形,因此给出了一个错误,因为我的代码有圆 有人知道如何将圆转换成多边形吗 我已经尝试了一些不起作用的解决方案(如下所示):Python 在.json文件中将圆转换为多边形,python,json,geometry,Python,Json,Geometry,我有一个.json文件,其中包含我想要训练神经网络的对象的注释(以圆和多边形为单位)。但是问题是,训练代码只接受.json文件中的多边形,因此给出了一个错误,因为我的代码有圆 有人知道如何将圆转换成多边形吗 我已经尝试了一些不起作用的解决方案(如下所示): import json from pprint import pprint with open('via_region_data(val).json') as f: data = json.load(f) for attr
import json
from pprint import pprint
with open('via_region_data(val).json') as f:
data = json.load(f)
for attr, val in data.items():
for attr2, val2 in val.items():
if attr2 == 'regions':
for attr3, val3 in val2.items():
if val3['shape_attributes']['name'] == 'circle':
cx = val3['shape_attributes']['cx']
cy = val3['shape_attributes']['cy']
r = val3['shape_attributes']['r']
all_points_x = [cx, cx - 1.5 * r, cx, cx + 1.5 * r, cx]
all_points_y = [cy - 1.5 * r, cy, cy + 1.5 * r, cy, cy - 1.5 * r]
val3['shape_attributes']['cx'] = all_points_x
val3['shape_attributes']['cy'] = all_points_y
val3['shape_attributes']['all_points_x'] = val3['shape_attributes'].pop('cx')
val3['shape_attributes']['all_points_y'] = val3['shape_attributes'].pop('cy')
val3['shape_attributes']['name'] = 'polygon'
pprint(data)
with open('via_region_data-val.json', 'w') as f:
json.dump(data, f)
投掷:
Traceback (most recent call last):
File "polygon_fixer.py", line 10, in <module>
for attr3, val3 in val2.items():
AttributeError: 'list' object has no attribute 'items'
回溯(最近一次呼叫最后一次):
文件“polygon_fixer.py”,第10行,在
对于attr3,val2.items()中的val3:
AttributeError:“列表”对象没有属性“项”
有什么想法吗
附言:很明显,有些人不明白我试图使用的是一个.JSON文件 关于这个问题有两个问题
JSON与圆和多边形无关。这与JSON有什么关系?这就像加上“星期一”标签,因为今天是星期一。什么?这是一个包含圆的.json文件。问题是如何将圆定义转换为多边形等价物。将生成的数据转换成特定的JSON格式是次要的(而且相当简单)。为了解决第一个问题,考虑使用AS方法来计算沿它的外缘的一系列点。你的问题还没有提供关于输入和多边形元素在输出中的两种形状(圆和多边形)的JSON格式的清晰定义。知道这对解决问题至关重要。
polygons = [r['shape_attributes'] for r in a['regions']]
names = [r['region_attributes'] for r in a['regions']]
polygons = [r['shape_attributes'] for r in a['regions'].values()]
names = [r['region_attributes'] for r in a['regions'].values()]