我正在训练掩码rcnn上的数据集。我已经在labelIMG工具(https://github.com/tzutalin/labelImg)上注释了大约1500张图像。
长话短说,我需要从JSON文件中的细分列表中获取x和y坐标的值。
如何使用Python编程访问列表? 或者还有其他方法可以在遮罩Rcnn上使用.xml注释。
这是从VOC PASCAL转换为COCO的数据集。 Xml被转换为JSON语法。
代码
import json
import codecs
data = json.load(codecs.open('example.json', 'r', 'utf-8-sig'))
for i in data['annotations']:
print(data['annotations'][0]) #want to output segmentation values in JSON files
JSON文件
{
"images": [
{
"file_name": "out538.png",
"height": 720,
"id": 20180000001,
"width": 1280
},
{
"file_name": "3 0751.jpg",
"height": 720,
"id": 20180000002,
"width": 1280
}
],
"type": "instances",
"annotations": [
{
"segmentation": [
[
935,
372,
935,
554,
1195,
554,
1195,
372
]
],
"area": 47320,
"iscrowd": 0,
"ignore": 0,
"image_id": 20180000001,
"bbox": [
935,
372,
260,
182
],
"category_id": 1,
"id": 1
},
{
"segmentation": [
[
743,
317,
743,
480,
962,
480,
962,
317
]
],
"area": 35697,
"iscrowd": 0,
"ignore": 0,
"image_id": 20180000001,
"bbox": [
743,
317,
219,
163
],
"category_id": 1,
"id": 2
}
],
"categories": [
{
"supercategory": "none",
"id": 1,
"name": "bike"
},
{
"supercategory": "none",
"id": 2,
"name": "Bike"
}
]
}
我想要细分列表的值:例如935, 372, 935, 554, 1195年, 554, 1195年, 372 但我得到的只是错误“列表索引必须是整数或切片,而不是字典”
答案 0 :(得分:0)
JSON是... dicts的字典 因此,您需要正确的键才能一直导航到细分。
annotations[0]['segmentation']
应该给您列表
答案 1 :(得分:0)
i
循环中的for i in data['annotations']:
变量将是字典,因为annotations
是词典列表。为了访问segmentation
列表,您需要执行以下操作:
for annotation in data['annotations']:
segmentation = annotation['segmentation']
actual_segment_data = segmentation[0]
最后一行代码是必需的,因为segmentation
是列表中的列表。
这应该返回以下内容:[935, 372, 935, 554, 1195, 554, 1195, 372]
。