Showing
1 changed file
with
73 additions
and
0 deletions
csv2coco.py
0 → 100644
| 1 | +import numpy as np | ||
| 2 | +import json | ||
| 3 | +import pandas as pd | ||
| 4 | + | ||
| 5 | +path = '../dataset/test/test1/annotations.csv' | ||
| 6 | +classpath = '../dataset/e_label2.csv' | ||
| 7 | +save_json_path = 'testcoco.json' | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +data = pd.read_csv(path, names=['filename', 'width', 'height', 'xmin', 'ymin', 'xmax', 'ymax', 'class']) | ||
| 11 | + | ||
| 12 | +images = [] | ||
| 13 | +categories = [] | ||
| 14 | +annotations = [] | ||
| 15 | + | ||
| 16 | +category = {} | ||
| 17 | +category["supercategory"] = 'none' | ||
| 18 | +category["id"] = 0 | ||
| 19 | +category["name"] = 'None' | ||
| 20 | +categories.append(category) | ||
| 21 | + | ||
| 22 | +data['fileid'] = data['filename'].astype('category').cat.codes | ||
| 23 | +data['categoryid']= pd.Categorical(data['class'],ordered= True).codes | ||
| 24 | +data['categoryid'] = data['categoryid']+1 | ||
| 25 | +data['annid'] = data.index | ||
| 26 | + | ||
| 27 | +def image(row): | ||
| 28 | + image = {} | ||
| 29 | + image["height"] = row.height | ||
| 30 | + image["width"] = row.width | ||
| 31 | + image["id"] = row.fileid | ||
| 32 | + image["file_name"] = row.filename | ||
| 33 | + return image | ||
| 34 | + | ||
| 35 | +def category(row): | ||
| 36 | + category = {} | ||
| 37 | + category["supercategory"] = 'None' | ||
| 38 | + category["id"] = row.categoryid | ||
| 39 | + category["name"] = row[2] | ||
| 40 | + return category | ||
| 41 | + | ||
| 42 | +def annotation(row): | ||
| 43 | + annotation = {} | ||
| 44 | + area = (row.xmax -row.xmin)*(row.ymax - row.ymin) | ||
| 45 | + annotation["segmentation"] = [] | ||
| 46 | + annotation["iscrowd"] = 0 | ||
| 47 | + annotation["area"] = area | ||
| 48 | + annotation["image_id"] = row.fileid | ||
| 49 | + | ||
| 50 | + annotation["bbox"] = [row.xmin, row.ymin, row.xmax -row.xmin,row.ymax-row.ymin ] | ||
| 51 | + | ||
| 52 | + annotation["category_id"] = row.categoryid | ||
| 53 | + annotation["id"] = row.annid | ||
| 54 | + return annotation | ||
| 55 | + | ||
| 56 | +for row in data.itertuples(): | ||
| 57 | + annotations.append(annotation(row)) | ||
| 58 | + | ||
| 59 | +imagedf = data.drop_duplicates(subset=['fileid']).sort_values(by='fileid') | ||
| 60 | +for row in imagedf.itertuples(): | ||
| 61 | + images.append(image(row)) | ||
| 62 | + | ||
| 63 | +catdf = data.drop_duplicates(subset=['categoryid']).sort_values(by='categoryid') | ||
| 64 | +for row in catdf.itertuples(): | ||
| 65 | + categories.append(category(row)) | ||
| 66 | + | ||
| 67 | +data_coco = {} | ||
| 68 | +data_coco["images"] = images | ||
| 69 | +data_coco["categories"] = categories | ||
| 70 | +data_coco["annotations"] = annotations | ||
| 71 | + | ||
| 72 | + | ||
| 73 | +json.dump(data_coco, open(save_json_path, "w"), indent=4) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment