Разобрать элементы файла JSON - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть JSON-файл, содержащий информацию о ограничивающих прямоугольниках (bbox) на изображениях (часто несколько ограничивающих прямоугольников на изображение).Я хотел бы проанализировать файл, чтобы я мог создать новый файл, который извлекает информацию о ограничивающих прямоугольниках в следующем формате:

image 0.jpg bbox x1, y1, x2, y2

image 0.jpg bbox x1, y1, x2, y2

....

image 1.jpg bbox x1, y1, x, y2

....

Мне удалось разобрать информацию о bbox, но, поскольку у каждого изображения может быть разное количество bbox, я не знаю, как решить проблему назначения bbox для своего конкретного изображения и затем представить каждое изображение+ bbox пара строка за строкой.

Вот что я получил до сих пор

import json

with open('D:\\Mask_RCNN\\coco_instances.json') as json_file:
    data = json.load(json_file)


result = []

for images in data['images']:
    filename = images['file_name']
    result.append(filename)
    print ("Filename = ",filename)
    filename1.append(filename)

for annotations in data['annotations']:
    bbox = annotations['bbox']
    print(bbox)
    xmin = bbox[0]
    ymin = bbox[1]
    xmax = bbox[2]
    ymax = bbox[3]
    result.extend([xmin,ymin,xmax,ymax])

И результат

Filename =  00000000.jpg
Filename =  00000001.jpg
[20.5, 214.5, 8.0, 17.0]
[61.5, 174.5, 10.0, 15.0]
[151.5, 43.5, 10.0, 20.0]
[161.5, 231.5, 7.0, 10.0]
[186.5, 159.5, 8.0, 11.0]
[201.5, 115.5, 13.0, 9.0]
[15.5, 154.0, 8.5, 9.5]
[39.5, 13.5, 9.5, 15.0]
[100.5, 55.5, 7.5, 11.0]
[119.5, 217.5, 7.0, 9.0]
[166.5, 150.5, 15.0, 12.0]
[214.5, 223.5, 22.0, 11.0]

Вот файл JSON JSON_file

Так как же я могу распечатать пары "картинка + ограничительные рамки" по 1 на строку?Любая помощь будет высоко ценится.

Вот пример файла JSON с 2 изображениями

{"info": {"description": "none", "url": "none", "version": "1", "year": 2019, "contributor": "none", "date_created": "27.09.2009"}, "licenses": [{"url": "", "id": 0, "name": "None"}], "images": [{"license": 0, "имя_файла": "00000000.jpg", "ширина": 256, "высота": 256, "идентификатор": 0}, {"лицензия": 0, "имя_файла": "00000001.jpg", "ширина": 256, «высота»: 256, «идентификатор»: 1}], «аннотации»: [{«сегментация»: [[26,0, 231,5, 25,5, 230,0, 28,5, 226,0, 28,5, 216,0, 24,0, 214,5, 21,5, 217,0, 22,5, 218,0, 20,5, 226,0, 23,0, 230,5, 26,0, 231,5]], "iscrowd": 0, "image_id": 0, "category_id": 1, "id": 0, "bbox": [20,5, 214,5, 8,0, 17,0], «площадь»: 97,75}, {«сегментация»: [[68,0, 189,5, 71,5, 181,0, 71,5, 176,0, 70,0, 174,5, 67,5, 175,0, 61,5, 183,0, 62,0, 188,5, 68.0, 189.5]], "iscrowd": 0, "image_id": 0, "category_id": 1, "id": 1, "bbox": [61.5, 174.5, 10.0, 15.0], "area": ​​101.5}, {"сегментация": [[159,0, 63,5, 161,5, 61,0, 161,5, 58,0, 159,5, 57,0, 158,5, 49,0, 156,5, 48,0, 155,0, 43,5, 153,0, 43,5, 151.5, 45,0, 151,5, 58,0, 157,0, 63,5, 159,0, 63,5]], «iscrowd»: 0, «image_id»: 0, «category_id»: 1, «id»: 2, «bbox»: [151,5, 43,5, 10,0, 20,0], «площадь»: 129,75}, {«сегментация»: [[165,0, 241,5, 168,5, 239,0, 168,5, 234,0, 164,0, 231,5, 161,5, 233,0, 161,5, 236,0, 165,0, 241,5]],"iscrowd": 0, "image_id": 0, "category_id": 1, "id": 3, "bbox": [161.5, 231.5, 7.0, 10.0], "area": ​​48.5}, {"сегментация":[[191.0, 170.5, 193.5, 169.0, 194.5, 163.0, 192.0, 159.5, 188.0, 159.5, 186.5, 164.0, 191.0, 170.5]], "iscrowd": 0, "image_id": 0, "category_id": 1,«id»: 4, «bbox»: [186,5, 159,5, 8,0, 11,0], «area»: 59,25}, {«сегментация»: [[207,0, 124,5, 214,5, 119,0, 213,0, 115,5, 210,0, 116,5,206.0, 121.5, 201.5, 123.0, 202.0, 124.5, 207.0, 124.5]], "iscrowd": 0, "image_id": 0, "category_id": 1, "id": 5, "bbox": [201.5, 115.5, 13,0, 9,0], «площадь»: 47,5}, {«сегментация»: [[17,0, 163,5, 20,5, 161,0, 24,0, 154,5, 18,5, 154,0, 15,5, 159,0, 17,0, 163,5]], «iscrowd»:0, "image_id": 1, "category_id": 1, "id":6, «bbox»: [15,5, 154,0, 8,5, 9,5], «площадь»: 44,0}, {«сегментация»: [[43,0, 28,5, 46,5, 25,0, 49,0, 13,5, 47,0, 13,5, 41,5, 19,0,39,5, 23,0, 39,5, 27,0, 43,0, 28,5]], "iscrowd": 0, "image_id": 1, "category_id": 1, "id": 7, "bbox": [39,5, 13,5, 9,5, 15,0], "область": 80,5}, {"сегментация": [[108,0, 66,5, 107,5, 61,0, 103,0, 55,5, 100,5, 60,0, 106,0, 66,5, 108,0, 66,5]], "iscrowd": 0, "image_id": 1," category_id ": 1," id ": 8," bbox ": [100.5, 55.5, 7.5, 11.0]," area ": 42.5}, {" сегментация ": [[123.0, 226.5, 125.5,225.0, 126.5, 222.0, 124.0, 217.5, 119.5, 220.0, 120.5, 225.0, 123.0, 226.5]], "iscrowd": 0, "image_id": 1, "category_id": 1, "id": 9, "bbox": [119,5, 217,5, 7,0, 9,0]," площадь ": 41,0}, {" сегментация ": [[172,0, 162,5, 176,5, 160,0, 179,5, 154,0, 181,5, 153,0, 180,0, 150,5, 176,0, 151,5,166,5, 158,0, 168,0, 162,5, 172,0, 162,5]], «iscrowd»: 0, «image_id»: 1, «category_id»: 1, «id»: 10, «bbox»: [166,5, 150,5, 15,0, 12,0], "область": 92,25}, {"сегментация": [[224,0, 234,5, 231,0, 230.5, 234,0, 230,5, 236,5, 226,0, 232,0, 223,5, 227,0, 224,5, 222,0, 227,5, 221,0, 226,5, 214,5, 233,0, 217,0, 234,5, 224,0, 234,5]], «iscrowd»: 0, «image_id»:1, "category_id": 1, "id": 11, "bbox": [214.5, 223.5, 22.0, 11.0], "area": ​​133.75}], "Categories": [{"Supercategory": "ячейки","id": 1, "name": "sperm"}]}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...