多个coco数据标注文件合并

本文介绍了一个Python脚本,用于合并COCO格式的JSON文件,以方便管理目标检测和图像分割任务中的数据。脚本通过更新图像和注释ID,将多个文件整合到一个merged_coco.json文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、coco数据集是什么?

COCO(Common Objects in Context)是一个用于目标检测和图像分割任务的标注格式。如果你有多个COCO格式的JSON文件,你可能需要将它们合并成一个文件,以便更方便地处理和管理数据。在这篇博客中,我们将介绍一个用Python编写的脚本,可以实现这一合并操作。

二、完整代码

import json
import os

def merge_coco_files(folder_path):
    merged_data = {
        "info": {
            "year": 2023,
            "version": "1",
            "date_created": "no need record"
        },
        "images": [],
        "annotations": [],
        "licenses": [
            {
                "id": 1,
                "name": "Unknown",
                "url": ""
            }
        ],
        "categories": [
            {
                "id": 1,
                "name": "hd",
                "supercategory": ""
            }
        ]
    }

    image_id_counter = 1
    annotation_id_counter = 1

    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".json"):
                file_path = os.path.join(root, file)
                with open(file_path, 'r') as f:
                    data = json.load(f)

                    # Update image IDs and filenames
                    for image in data["images"]:
                        image["id"] = image_id_counter
                        image_id_counter += 1

                        # Use the original file name from the COCO file
                        image["file_name"] = image["file_name"]

                        # Append the updated image to the merged_data only if it's not already present
                        if image not in merged_data["images"]:
                            merged_data["images"].append(image)

                    # Update annotation IDs and image IDs
                    for annotation in data["annotations"]:
                        annotation["id"] = annotation_id_counter
                        annotation_id_counter += 1
                        annotation["image_id"] = image_id_counter - 1  # Use the last assigned image ID

                        # Append the updated annotation to the merged_data
                        merged_data["annotations"].append(annotation)

    # Save the merged data to a new JSON file
    output_path = os.path.join(folder_path, "merged_coco.json")
    with open(output_path, 'w') as output_file:
        json.dump(merged_data, output_file, indent=4)

    print(f'Merged data saved to: {output_path}')

# Provide the path to the folder containing the COCO JSON files
folder_path = r''
merge_coco_files(folder_path)

脚本的主要步骤包括:

初始化合并后的数据结构。
遍历指定文件夹中的所有JSON文件。
对每个JSON文件中的图像和注释进行ID的更新。
将更新后的数据保存为新的JSON文件。

使用方法

为了使用这个脚本,你只需提供包含COCO JSON文件的文件夹路径,并运行脚本。合并后的数据将保存在原始文件夹中,并命名为"merged_coco.json"。

这个脚本可以帮助你更好地组织和管理COCO格式的数据,使其更适用于你的目标检测或图像分割项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张Tt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值